|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class MyProperty:
def __init__(self,fget=None,fdel=None,fset=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 = 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 = 's'
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
c.x = 's'
File "E:/Python Practice/MyProperty.py", line 9, in __set__
self.fset(instance,value)
TypeError: delX() takes 1 positional argument but 2 were given
这个地方学的不是很好,想在悬赏里求助可是用户组等级不够。。。
这个报错报的我心碎了,首先实例出c没问题,可是 执行c.x = 's'报的却是delX()的错,而且还说应该需要一个,但是给了两个,而且还和第九行有关,看了半天看不出来。另外,我买了小甲鱼老师的配套Python书,发现和视频中MyProperty类下的删除方法有所不同,视频中的名称是__del__,而书中的是__delete__,但是无论是哪种,仿佛并没有影响程序的运行,而且我把两种名称改过了之后还是报删除的错,真心是跪了,求版主或小甲鱼老师不吝赐教啊 |
|