Trong Python, getters và setters không giống như các ngôn ngữ trong các ngôn ngữ lập trình hướng đối tượng khác. Về cơ bản, mục đích chính của việc sử dụng getters và setters trong các chương trình hướng đối tượng là để đảm bảo đóng gói dữ liệu. Các biến riêng tư trong Python không thực sự là các trường ẩn như trong các ngôn ngữ định hướng đối tượng khác. Getters và setters trong Python thường được sử dụng khi:
- Chúng tôi sử dụng getters & setters để thêm logic xác thực xung quanh việc nhận và đặt giá trị.
- Để tránh truy cập trực tiếp của trường lớp, tức là các biến riêng tư không thể được truy cập trực tiếp hoặc sửa đổi bởi người dùng bên ngoài.
Sử dụng chức năng bình thường để đạt được hành vi getters và setters
Để đạt được thuộc tính Getters & Setters, nếu chúng ta xác định các phương thức get[]
và set[]
bình thường, nó sẽ không phản ánh bất kỳ triển khai đặc biệt nào. Ví dụ
class
Geek:
def
__init__[
setter method called getter method called 100
setter method called getter method called 101
setter method called getter method called 102
setter method called getter method called 103
setter method called getter method called 104
setter method called getter method called 105
setter method called getter method called 100
setter method called getter method called 107
setter method called getter method called 102
setter method called getter method called 109
‘
setter method called getter method called 195
setter method called getter method called 196
setter method called getter method called 100
setter method called getter method called 198
def
get[]
1
setter method called getter method called 100
get[]
3setter method called getter method called 195
setter method called getter method called 100
setter method called getter method called 107
setter method called getter method called 102
get[]
8get[]
9
setter method called getter method called 102
set[]
1set[]
2set[]
3set[]
4
set[]
5set[]
6
set[]
5set[]
8
Output:
21 21
Trong các chức năng mã trên set[]
9 và class
0 hoạt động như các hàm bình thường và không chơi bất kỳ tác động nào như getters và setters, để đạt được chức năng như vậy Python có chức năng đặc biệt class
1.
Sử dụng hàm [] hàm để đạt được hành vi getters và setters
Trong Python class
1 là một chức năng tích hợp tạo và trả về một đối tượng thuộc tính. Một đối tượng thuộc tính có ba phương thức, getter [], setter [] và delete []. class
3Function Trong Python có bốn đối số class
4, class
5 là một hàm để truy xuất giá trị thuộc tính. class
6 là một hàm để thiết lập giá trị thuộc tính. class
7 là một hàm để xóa giá trị thuộc tính. class
8 tạo ra một tài liệu cho thuộc tính. Một đối tượng thuộc tính có ba phương thức, class
9, Geek:
0 và Geek:
1 để chỉ định riêng lẻ class
5, class
6 và class
7. Ví dụ
class
Geek:
6
Geek:
7def
__init__[
setter method called getter method called 100
setter method called getter method called 104
2
setter method called getter method called 100
setter method called getter method called 107
setter method called getter method called 102
setter method called getter method called 103
Geek:
7def
setter method called getter method called 1922____1010
setter method called getter method called 105
set[]
5def
4def
5set[]
4setter method called getter method called 105
setter method called getter method called 196
setter method called getter method called 100
setter method called getter method called 198
Geek:
7def
get[]
1
setter method called getter method called 100
__init__[
5setter method called getter method called 105
set[]
5def
4__init__[
9set[]
4setter method called getter method called 105
setter method called getter method called 100
setter method called getter method called 107
setter method called getter method called 102
setter method called getter method called 1005
Geek:
7def
setter method called getter method called 1008
setter method called getter method called 100
setter method called getter method called 104
setter method called getter method called 105
setter method called getter method called 1012
setter method called getter method called 100
setter method called getter method called 198
Geek:
7
setter method called getter method called 1016
setter method called getter method called 102
setter method called getter method called 1018
setter method called getter method called 1019
setter method called getter method called 1020
setter method called getter method called 102
setter method called getter method called 1022
setter method called getter method called 1023
setter method called getter method called 102
setter method called getter method called 1025
set[]
5
setter method called getter method called 1027
Output:
setter method called getter method called 10
Trong mã trên, chỉ có một câu lệnh in tại
setter method called getter method called 1028 nhưng đầu ra bao gồm ba dòng do phương thức setter
class
0 được gọi trong setter method called getter method called 1030 và phương thức getter
set[]
9 được gọi trong setter method called getter method called 1028. Do đó
setter method called getter method called 109 là một đối tượng thuộc tính giúp giữ cho việc truy cập của biến riêng tư an toàn.
Sử dụng các nhà trang trí @Property để đạt được hành vi getters và setters
Trong phương pháp trước, chúng tôi đã sử dụng hàm class
1 để đạt được hành vi getters và setters. Tuy nhiên, như đã đề cập trước đó trong bài đăng này, getters và setters cũng được sử dụng để xác thực việc nhận và cài đặt giá trị thuộc tính. Có một cách nữa để thực hiện chức năng tài sản, tức là bằng cách sử dụng Trình trang trí. Python @Property là một trong những người trang trí tích hợp. Mục đích chính của bất kỳ người trang trí nào là thay đổi các phương thức hoặc thuộc tính lớp của bạn theo cách sao cho người dùng lớp của bạn không cần thực hiện bất kỳ thay đổi nào trong mã của họ. Ví dụ
class
Geek:
6
Geek:
7def
__init__[
setter method called getter method called 100
setter method called getter method called 104
2
setter method called getter method called 100
setter method called getter method called 107
setter method called getter method called 102
setter method called getter method called 103
Geek:
7
setter method called getter method called 1048
Geek:
7def
setter method called getter method called 1922____1010
setter method called getter method called 105
set[]
5def
4def
5set[]
4setter method called getter method called 105
setter method called getter method called 196
setter method called getter method called 100
setter method called getter method called 198
Geek:
7
setter method called getter method called 1064
setter method called getter method called 1065
Geek:
7def
get[]
1
setter method called getter method called 100
__init__[
5setter method called getter method called 105
setter method called getter method called 1072
setter method called getter method called 1073
setter method called getter method called 1074
setter method called getter method called 104
setter method called getter method called 105
setter method called getter method called 100
setter method called getter method called 107
setter method called getter method called 102
setter method called getter method called 1005
setter method called getter method called 105
set[]
5def
4__init__[
9set[]
4setter method called getter method called 105
setter method called getter method called 100
setter method called getter method called 107
setter method called getter method called 102
setter method called getter method called 1005
setter method called getter method called 1020
setter method called getter method called 102
setter method called getter method called 1022
setter method called getter method called 1023
setter method called getter method called 102
setter method called getter method called 1025
set[]
5
setter method called getter method called 1027
Output:
setter method called getter method called 19
Trong mã trên, chỉ có một câu lệnh in tại
setter method called getter method called 1028 nhưng đầu ra bao gồm ba dòng do phương thức setter
class
0 được gọi trong setter method called getter method called 1030 và phương thức getter
set[]
9 được gọi trong setter method called getter method called 1028. Do đó
setter method called getter method called 109 là một đối tượng thuộc tính giúp giữ cho việc truy cập của biến riêng tư an toàn.