|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在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类的 父方法
复制代码
|
|