@property有两个作用
1 将类方法转换为只读属性
举个栗子:
class Parrot(object):
def __init__(self):
self._voltage = 100000
@property
def voltage(self):
"""Get the current voltage."""
return self._voltage
summer=Parrot()
print(summer.voltage)
这里,@property 就把类Parrot的方法 voltage转换为一个只读属性,不可以对该属性操作。
2 重新实现一个属性的setter和getter方法
举个栗子:
class C(object):
def __init__(self): self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
test=C()
print(test.x)
test.x=10
print(test.x)
输出为:
None
10
@property重新实现了属性x的setter和getter。
但有一点不理解的是,
如何实现deleter的????