理不清楚在代码中,属性访问属性是怎样执行的,请讲解属性访问属性的过程
>>> class C:
def __init__(self,size=10):
self.size = size
def getSize(self):
return self.size
def setSize(self,value):
self.size = value
def delSize(self):
del self.size
x = property(getSize,setSize,delSize)
>>>
>>> c = C()
>>> c.x
10
>>> c.x = 12
>>> c.x
12
>>> x.size
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
x.size
NameError: name 'x' is not defined
>>> c.size
12
>>> del c.size
>>> c.size
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
c.size
AttributeError: 'C' object has no attribute 'size'
```python
class C:
def __init__(self, size=10):
self.size = size
def getSize(self):
return self.size
def setSize(self, value):
self.size = value
def delSize(self):
del self.size
x = property(getSize, setSize, delSize)
c = C()
print(c.size) # 访问初始化属性
print(c.x) # 获取时,默认调用x的第一个参数'getSize'
c.x = 20 # 当你想赋值时,调用x的第二个参数,'setSize',隐式调用
print(c.x)
c.delSize() # 删除属性,显示调用
```