首页 新闻 会员 周边 捐助

print(super(C,obj)) 得到<super: <class 'C'> ,<C object>> 这是什么意思

0
[已关闭问题] 关闭于 2025-08-16 15:15

super(Class, obj) 的正式用法:
Class:告诉 super 从哪个类的父类 开始找方法(通常写当前类名)。
obj:必须是 Class 或其子类的实例,super 会把该
实例当成 self 传给父类方法。

class Parent:
    def show(self): print("Parent")

class Child(Parent):
    def show(self):
        s = super(Child, self)  # 从 Parent 开始找
        s.show()                # 等价于 Parent.show(self)

Child().show()   # 输出 Parent

Python 3 可简写 super(),效果完全等同。
在类外部直接使用 super() 无参数形式是不行的,只有在类的方法内部才能使用简化形式 super()。让我详细解释这种限制的原因以及如何在不同场景中正确使用:

为什么类外部不能直接用 super()?
super() 无参数形式依赖 Python 的运行时上下文:
自动获取当前类(通过函数调用栈)
自动获取当前实例(self 或类方法的 cls)
在类外部,Python 无法自动获取这些上下文信息

_java_python的主页 _java_python | 小虾三级 | 园豆:1000
提问于:2025-08-15 11:07
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册