|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 天下有敌 于 2020-6-17 10:25 编辑
为什么黄框内的 self.name = value 会触发魔法方法 __setattr__ 所以无限递归 调用基类魔法方法就没事了
那红框内的赋值操作怎么就不会 触发 魔法方法 导致无限递归呢?
顺便问一下怎么删帖删评论?
因为你 self.name = value 时候会导致你触发 __setattr__
而触发 __setattr__ 然后又开始判断 if 此时 name 不为 square 然后又执行 else 里面的 语句
调用父类成功赋值完后 又遇到 self.name = value 然后 又进入 __setattr__ ....就是这样无限循环
而去掉 self.name = value 呢?
那么就只调用了 super() 的父类方法 里面没有继续赋值 也就不会产生递归
而 self.width 赋值 因为 width 不等于 square 然后 调用 else 后 只调用了 super() 的父类方法 然后就结束了
并不会导致递归
|
-
小甲鱼代码
-
|