本帖最后由 zlj19931010 于 2017-4-14 10:18 编辑
给class C定义一个x属性,x是你自定义类MyProperty的实例,
x = MyProperty(getX,setX,delX)
MyProperty中
当要获取x值的时候触发__get__()执行class C中的getX函数 c.x
当要修改x值的时候触发__set__()执行class C中的setX函数 c.x = 12
当要删除x值的时候触发__delete__()执行class C中的delX函数 del c.x
- >>> c = C()
- >>> c.x = 1
- >>> c.x
- 'haha1'
- >>> del c.x
复制代码
还有x前面如果不加 _ 就会变成一个死循环 为什么呢?新手不懂啊啊啊啊
同名了肯定循环,比如
- class C:
- def __init__(self):
- self._x = None
- def getX(self):
- return self._x
- def setX(self,value):
- self._x = value
- def delX(self):
- del self._x
- _x = MyProperty(getX,setX,delX)
复制代码
init中的self._x = None触发setX函数
setX中 self._x = value,又触发setX,就循环了
具体小甲鱼有详细的解释
http://bbs.fishc.com/forum.php?m ... peid%26typeid%3D403