马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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__()方法呢?
在Python中,`super()`函数是用来调用父类(或基类)的方法的,但如果你的类没有显式地继承任何其他类,它会默认继承自`object`类。
所以在你的代码中,虽然类 `C` 没有指定继承任何类,但实际上它是隐式地继承了 `object` 类的。也就是说,当你调用 `super().__getattribute__(attrname)` 时,它实际上是调用了 `object` 类中的 `__getattribute__()` 方法。
这是一个非常好的提醒,告诉我们即使不明确声明,也总有一个“祖宗”在那儿帮忙!所以当你看到 `super()` 时,可以放心大胆地使用,因为它总会找到合适的父类来支持你。在这个情况下,`super()` 带你回到了 `object` 类,给你提供了一个可以使用的 `__getattribute__()` 方法。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|