python中的属性和属性有什么区别?

在python中,一切都是对象。每个对象都有属性,方法或功能。属性由数据变量描述,例如名称,年龄,身高等。

属性是一种特殊的属性,具有getter,setter和delete方法,例如__get __,__ set__和__delete__方法。

但是,Python中有一个属性装饰器,它提供对属性的getter / setter访问属性是一种特殊的属性。基本上,当Python遇到以下代码时:

foo = SomeObject()print(foo.bar)

它在foo中查找bar,然后检查bar以查看它是否具有__get __,__ set__或__delete__方法,如果具有,则为属性。如果它是一个属性,则它不仅会返回bar对象,还将调用__get__方法并返回该方法返回的内容。

在Python中,您可以使用property函数定义getter,setter和delete方法。如果只需要read属性,则可以在方法上方添加一个@property装饰器。

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