
Giới thiệu Python Descriptor
Giới thiệu
Các Python descriptors đã được giới thiệu trong Python 2.2, cùng với các lớp kiểu dáng mới,
nhưng chúng vẫn chưa được sử dụng rộng rãi. Các Python descriptors là cách để tạo ra các thuộc
tính được quản lý. Trong số rất nhiều lợi thế của chúng, các thuộc tính được quản lý đó được sử
dụng để bảo vệ một thuộc tính khỏi những thay đổi hoặc để tự động cập nhật các giá trị của một
thuộc tính phụ thuộc.
Các descriptors làm tăng sự hiểu biết về Python và cải thiện các kỹ năng mã hóa. Bài này giới
thiệu giao thức descriptors và trình bày cách tạo và sử dụng các descriptors.
Giao thức descriptors
Giao thức descriptors trong Python chỉ đơn giản là một cách để xác định những gì sẽ xảy ra khi
tham chiếu một thuộc tính trong một mô hình. Nó cho phép một lập trình viên quản lý truy cập
thuộc tính dễ dàng và hiệu quả:
set
get
delete
Trong các ngôn ngữ lập trình khác, các descriptors được gọi là setter và getter, ở đây các hàm
public được sử dụng để Get (nhận giá trị) và Set (đặt giá trị ) cho một biến private. Python không
có một khái niệm về các biến private và có thể coi giao thức descriptors như là một cách của
Python để đạt được điều tương tự.
Nhìn chung, một descriptor là một thuộc tính của đối tượng với một hành vi kết buộc, một hành
vi mà việc truy cập thuộc tính của nó bị ghi đè bằng các phương thức trong giao thức descriptors.
Các phương thức đó là __get__, __set__ và __delete__. Nếu định nghĩa một phương thức bất
kỳ trong số này cho một đối tượng, người ta nói rằng đó là một descriptor. Hãy xem xét kỹ hơn
các phương thức này trong Liệt kê 1.
Liệt kê 1. Các phương thức descriptors
__get__(self, instance, owner)
__set__(self, instance, value)
__delete__(self, instance)
Ở đây:
__get__ truy cập thuộc tính. Nó trả về giá trị của thuộc tính hoặc đưa ra ngoại lệ
AttributeError nếu không tồn tại thuộc tính được yêu cầu.