|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
因为不能上图,我只能手打说明了
在【045 魔法方法 属性访问】中,一次关于__attribute__的无限循环的演示中
代码:
class Rectangle:
def __init__(self, width = 0, height = 0):
self.width = 0
self.height = 0
def __setattr__(self, name, value):
if name == 'square':
self.width = value
self.height = value
else:
super().__setattr__(name, value)
def getArea(self):
return self.width * self.height
当输入square=10时,为什么不会进入无限循环了,我走不出来了。麻烦哪位大佬指点一下。
不会 if 会调用自己的 __setattr__ 方法,比如 self.width = value 那么此时调用自己的 __setattr__ 方法时候
name 变成了 width ,所以执行 else ,重新调用了super().__setattr__(name, value) 来给 self.width = value 赋值
而 if 里的 self.height = value 也是同理
|
|