|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题一.对于第四行的 return super(). 不太明白,这个时候调用object.__getattribute__ 有什么用??
- class C:
- def __getattribute__(self,name):
- print('getattribute')
- return super().__getattribute__(name)
- def __getattr__(self):
- print('__getattr__')
- def __setattr__(self,name,value):
- print('setattr')
- super().__setattr__(name,value)
- def __delattr__(self,name):
- print('delattr')
- super().__delattr__(name)
复制代码
问题二,为什么又是调用了object.__setattr__ 就可以避免死循环
- class Rectangle:
- def __init__(self,width = 0,length = 0):
- self.width = width
- self.length = length
- def __setattr__(self,name,value):
- if name == 'square':
- self.width = value
- self.length = value
- #这是一种会导致死循环的写法
- else:
- self.name = value
- #下面是另外一种避免死循环的写法
- else:
- super().__setattr__(name,value)
- def getare(self):
- return self.width*self.length
复制代码
感觉问题一和问题二 都差不多 实在搞不懂 调用object的方法就这么厉害?
请大神解答一下
|
|