wbzxz 发表于 2024-7-30 22:53:02

请教super()函数来自哪个类

>>> 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__()方法呢?

FishC 发表于 2024-7-30 22:53:12

在Python中,`super()`函数是用来调用父类(或基类)的方法的,但如果你的类没有显式地继承任何其他类,它会默认继承自`object`类。

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 请教super()函数来自哪个类