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