关于super函数的问题
在python中,我见到了2种super函数调用父类init方法的用法,这两种用法有什么区别呢?第一种是super中无任何参数,第二种是super中带有参数,第一个参数为类本身,第二个参数为self
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
print('B')
super().__init__()
class C(A):
def __init__(self):
print('C')
super(C, self).__init__()
class D(B, C):
def __init__(self):
print('D')
super(D, self).__init__()
应该可以这么理解:
super 没填参数时候 Python 会自动传入默认值,比如这里的:
class B(A):
def __init__(self):
print('B')
super().__init__()# 等价于 super(B,self).__init__()
然后如果传入参数就是在父类链中指定调用的是哪个类的父类方法,比如:
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
print('B')
super().__init__()
class C(A):
def __init__(self):
print('C')
super(B, self).__init__()# 指明调用 B类的 父方法
页:
[1]