lsc顺 发表于 2020-6-11 21:10:21

关于对象和类的super()

def __setattr__(self, name, value):

      super().__setattr__(name, value+1)



查了一些资料也没搞懂super是怎么找到基类的。
这个调用为什么就不会进入迭代死循环??不也是用setattr来赋值了么难道调用基类的setattr就不算这个函数的setattr么?

Twilight6 发表于 2020-6-11 21:14:44

本帖最后由 Twilight6 于 2020-6-11 21:18 编辑



所有类如果没有特别指明,默认继承的就是基类,基类中自带 __setattr__ 方法所以你这边调用基类的方法来赋值

而这里的 super().__setattr__(name, value+1) 是特别指明了要用基类的方法,当然不会被这个函数的 setattr 干扰

lsc顺 发表于 2020-6-11 21:40:28

Twilight6 发表于 2020-6-11 21:14
所有类如果没有特别指明,默认继承的就是基类,基类中自带 __setattr__ 方法所以你这边调用基类的方 ...

我可以理解为因为调用的是基类的这个函数不是现在被重写的函数所以不会发生迭代循环?

Twilight6 发表于 2020-6-11 21:40:46

lsc顺 发表于 2020-6-11 21:40
我可以理解为因为调用的是基类的这个函数不是现在被重写的函数所以不会发生迭代循环?

正解!

Twilight6 发表于 2020-7-1 23:11:22

lsc顺 发表于 2020-6-11 21:40
我可以理解为因为调用的是基类的这个函数不是现在被重写的函数所以不会发生迭代循环?

这个帖子也设置下最佳吧~~~ 你的最佳就是我最大的动力!

lsc顺 发表于 2020-7-1 23:20:14

Twilight6 发表于 2020-7-1 23:11
这个帖子也设置下最佳吧~~~ 你的最佳就是我最大的动力!

大佬你太厉害了。。我现在在看小甲鱼的视频。有时候总是云里雾里,做题目也需要看一眼答案才能写出来。。一开始都这样么。。感觉有的知识点几天不用就忘了

Twilight6 发表于 2020-7-1 23:34:56

lsc顺 发表于 2020-7-1 23:20
大佬你太厉害了。。我现在在看小甲鱼的视频。有时候总是云里雾里,做题目也需要看一眼答案才能写出来。。 ...


我开始的时候也是这样滴呀~~新人学 Python 都要有这个过程滴
页: [1]
查看完整版本: 关于对象和类的super()