Computer >> Máy Tính >  >> Lập trình >> Python

Sự khác biệt giữa thuộc tính và thuộc tính trong python là gì?

Trong python, mọi thứ đều là một đối tượng. Và mọi đối tượng đều có thuộc tính và phương thức hoặc chức năng. Các thuộc tính được mô tả bằng các biến dữ liệu, ví dụ như tên, tuổi, chiều cao, v.v.

Thuộc tính là loại thuộc tính đặc biệt có các phương thức getter, setter và delete như phương thức __get__, __set__ và __delete__.

Tuy nhiên, có một trình trang trí thuộc tính trong Python cung cấp quyền truy cập getter / setter vào một thuộc tính Thuộc tính là một loại thuộc tính đặc biệt. Về cơ bản, khi Python gặp mã sau:

foo = SomeObject()
print(foo.bar)

nó tìm kiếm thanh trong foo, sau đó kiểm tra thanh để xem nó có phương thức __get__, __set__ hoặc __delete__ hay không và nếu có thì đó là một thuộc tính. Nếu nó là một thuộc tính, thay vì chỉ trả về đối tượng bar, nó sẽ gọi phương thức __get__ và trả về bất cứ thứ gì mà phương thức đó trả về.

Trong Python, bạn có thể xác định các phương thức getters, setters và delete bằng hàm thuộc tính. Nếu bạn chỉ muốn thuộc tính read, thì cũng có một trình trang trí @property mà bạn có thể thêm phía trên phương thức của mình.

class C(object):
    def __init__(self):
        self._x = None
#C._x is an attribute
@property
    def x(self):
        """I'm the 'x' property."""
        return self._x
# C._x is a property   This is the getter method
@x.setter # This is the setter method
    def x(self, value):
        self._x = value
@x.deleter # This is the delete method
    def x(self):
        del self._x