首页 新闻 会员 周边 捐助

super(class,self/cls)不仅仅只能用self

0
[已解决问题] 解决于 2025-08-15 11:37

可以填 cls,但要用 类方法 或 静态方法 的场景,写法不同

类方法(@classmethod)
Python
复制
class Parent:
    @classmethod
    def info(cls):
        print(cls)
        print("Parent class:", cls)  #这里cls也是子类

class Child(Parent):
    @classmethod
    def info(cls):
        print(cls)
        super(Child, cls).info()   # 这里的 cls 就是类本身

静态方法(@staticmethod)
静态方法没有 cls/self,不能用 super,需显式写类名。

打印:
<class 'main.Child'>
<class 'main.Child'>

_java_python的主页 _java_python | 小虾三级 | 园豆:1050
提问于:2025-08-15 11:35
< >
分享
最佳答案
0

总结:
super(Class, self) —— 用于 实例方法
super(Class, cls) —— 用于 类方法
静态方法无隐式第一参数,不能用 super。

不管是实例还是类,传递到父类都不变,都是子类/子实例对象

_java_python | 小虾三级 |园豆:1050 | 2025-08-15 11:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册