|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 杨泰桦 于 2018-8-16 23:24 编辑
>>> class MyProperty:
def __init__(self,fget=None,fset=None,fdel=None):
self.fget=fget
self.fset=fset
self.fdel=fdel
def __get__(self,instance,owner):
return self.fget()
def __set__(self,instance,value):
self.fset(instance,value)
def __del__(self,instance):
self.fdel(instance)
>>> 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)
>>> c=C()
>>> c.x
Traceback (most recent call last):
File "<pyshell#148>", line 1, in <module>
c.x
File "<pyshell#144>", line 7, in __get__
return self.fget()
TypeError: getX() missing 1 required positional argument: 'self'
>>> c.x
这里错误提示说我的getX()调用时缺少了一个参数self,但是我这句‘return self.fget()’中不是自动会把self传进“def fget(self)”里面的self吗
ps:正确答案里是说把“return self.fget()"改为”return self.fget(instance)“,但是这样改应该会引出另一个错误(因为它会把self也传进去)
你开始说的self是MyProperty实例
instance是针对 C类实例
|
|