BigSmall 发表于 2018-11-4 20:53:53

理解不了这段代码

红色部分的代码理解不了,else是在执行什么样的操作?是什么意思呢?

塔利班 发表于 2018-11-4 21:01:35

防止你无限递归
init就进入setattr,setattr里面还是赋值,只有super()的setattr不会再进入当前类的setattr

BigSmall 发表于 2018-11-4 21:50:05

本帖最后由 BigSmall 于 2018-11-4 21:52 编辑

塔利班 发表于 2018-11-4 21:01
防止你无限递归
init就进入setattr,setattr里面还是赋值,只有super()的setattr不会再进入当前类的seta ...

还是不太理解
就是我不是太明白,为什么会引起递归?
如果不用super(),else处写self.name=value
Rectangle(3,4),先是__init__,然后呢?怎么会递归?

塔利班 发表于 2018-11-4 21:54:25

你先试试

BigSmall 发表于 2018-11-4 21:56:43

塔利班 发表于 2018-11-4 21:54
你先试试

我知道会引起递归,就是不太明白原理,麻烦说明一下,谢谢

塔利班 发表于 2018-11-4 22:00:32

self.xx=yyyy这种就会调用setattr,你在setattr函数里还用这种self赋值就变成自己调用自己,然后就停不下来,
但是super就没关系了,因为不是self的属性赋值,用了父类的

BigSmall 发表于 2018-11-4 23:04:28

塔利班 发表于 2018-11-4 22:00
self.xx=yyyy这种就会调用setattr,你在setattr函数里还用这种self赋值就变成自己调用自己,然后就停不下来 ...

谢谢你了,明白了{:10_275:}
页: [1]
查看完整版本: 理解不了这段代码