鱼C论坛

 找回密码
 立即注册
查看: 134|回复: 1

[已解决]请教super()函数来自哪个类

[复制链接]
发表于 2024-7-30 22:53:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> class C:
...     def __init__(self, name, age):
...         self.name = name
...         self.__age = age
...     def __getattribute__(self, attrname):
...         print("拿来吧你~")
...         return super().__getattribute__(attrname)
...      

请问上面这个代码,本身类C没有继承任何类,代码中super().__getattribute__(attrname)应该继承的哪个类的__getattribute__()方法呢?
最佳答案
2024-7-30 22:53:12
在Python中,`super()`函数是用来调用父类(或基类)的方法的,但如果你的类没有显式地继承任何其他类,它会默认继承自`object`类。

所以在你的代码中,虽然类 `C` 没有指定继承任何类,但实际上它是隐式地继承了 `object` 类的。也就是说,当你调用 `super().__getattribute__(attrname)` 时,它实际上是调用了 `object` 类中的 `__getattribute__()` 方法。

这是一个非常好的提醒,告诉我们即使不明确声明,也总有一个“祖宗”在那儿帮忙!所以当你看到 `super()` 时,可以放心大胆地使用,因为它总会找到合适的父类来支持你。在这个情况下,`super()` 带你回到了 `object` 类,给你提供了一个可以使用的 `__getattribute__()` 方法。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-30 22:53:12 | 显示全部楼层    本楼为最佳答案   
在Python中,`super()`函数是用来调用父类(或基类)的方法的,但如果你的类没有显式地继承任何其他类,它会默认继承自`object`类。

所以在你的代码中,虽然类 `C` 没有指定继承任何类,但实际上它是隐式地继承了 `object` 类的。也就是说,当你调用 `super().__getattribute__(attrname)` 时,它实际上是调用了 `object` 类中的 `__getattribute__()` 方法。

这是一个非常好的提醒,告诉我们即使不明确声明,也总有一个“祖宗”在那儿帮忙!所以当你看到 `super()` 时,可以放心大胆地使用,因为它总会找到合适的父类来支持你。在这个情况下,`super()` 带你回到了 `object` 类,给你提供了一个可以使用的 `__getattribute__()` 方法。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表