在 Python 里,super() 用来访问**父类(超类)**的方法或属性,常见用法和注意点如下。
class Parent:
def hello(self):
print("Hello from Parent")
class Child(Parent):
def hello(self):
super().hello() # 调用父类的 hello
print("Hello from Child")
c = Child()
c.hello()
输出:
Hello from Parent
Hello from Child
super() 访问实例属性class Parent:
def __init__(self):
self.x = 10
class Child(Parent):
def __init__(self):
super().__init__() # 先初始化父类
print(self.x) # 访问父类设置的属性
self.x = 20
c = Child()
print(c.x)
✅ 说明:
super().__init__() 会把 self.x = 10 设置好self.x 就是父类定义的属性super() 访问父类方法中的属性class Parent:
def __init__(self):
self.x = 10
def get_x(self):
return self.x
class Child(Parent):
def show(self):
value = super().get_x() # 通过父类方法访问父类属性
print(value)
c = Child()
c.show()
class Parent:
x = 100
class Child(Parent):
def show(self):
print(super().x) # ✅ 访问父类类属性
c = Child()
c.show()
super()(旧式 / 多继承)super(Child, self).method()
在 单继承 中通常不需要,但在 多继承 / 复杂 MRO 中更精确。
super().x 访问实例属性(除非是类属性)class Parent:
def __init__(self):
self.x = 10
class Child(Parent):
def show(self):
print(super().x) # ❌ 会报错
✅ 正确做法:
super().__init__()self.xsuper 用来找父类,方法属性都能用
实例属性先初始化,类属性直接 super 拿
如果你用的是 Java / JavaScript / Kotlin 或涉及 多继承 MRO,可以继续问,我可以针对具体语言讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。