|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class myproperty():
def __init__(self,fget=None,fset=None,fdel=None):
self.fget = fset
self.fset = fset
self.fdel = fdel
def __get__(self,instance,owner):
return self.fget(instance)
def __set__(self,instance,value):
self.fset(instance,value)
def __delete__(self,instance):
self.fdel(instance)
class C:
def __init__(self):
self._x = 250
def getx(self):
return self._x
def setx(self,value):
self._x = value
def delx(self):
del self._x
x = myproperty(getx,setx,delx)
cc = C()
cc.x
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
CC.x
File "F:\Python\test.py", line 98, in __get__
return self.fget(instance)
TypeError: C.setx() missing 1 required positional argument: 'value'
在代码中存在一个错误,导致出现了 TypeError: C.setx() missing 1 required positional argument: 'value' 错误。这是因为在 myproperty 类的构造函数中,错误地将 fset 赋值给了 fget,导致在调用属性的设置方法时传递了错误的参数。
要修复这个问题,你需要更正 myproperty 类的构造函数中的错误赋值语句。具体来说,你需要将第二行和第三行的 self.fget = fset 修改为 self.fget = fget,以确保在调用属性的获取方法时传递正确的参数。
修正后的代码如下:
- 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(instance)
-
- def __set__(self, instance, value):
- self.fset(instance, value)
-
- def __delete__(self, instance):
- self.fdel(instance)
- class C:
- def __init__(self):
- self._x = 250
-
- def getx(self):
- return self._x
-
- def setx(self, value):
- self._x = value
-
- def delx(self):
- del self._x
-
- x = myproperty(getx, setx, delx)
- cc = C()
- cc.x
复制代码
修正后的代码不再会出现上述错误,可以正常运行,并输出属性 x 的值。
希望能够帮助到你!如果有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!  
|
|