0
点赞
收藏
分享

微信扫一扫

super真的是调用父类吗

from threading import Thread
class MyThread(Thread):
def __init__(self, name, user):
self.user = user
super().__init__(name=name)

#既然我们重写B的构造函数, 为什么还要去调用super?
#super到底执行顺序是什么样的?


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().__init__()

class D(B, C):
def __init__(self):
print ("D")
super(D, self).__init__()

if __name__ == "__main__":
print(D.__mro__)
d = D()

#mixin模式特点
# 1. Mixin类功能单一
# 2. 不和基类关联,可以和任意基类组合, 基类可以不和mixin关联就能初始化成功
# 3. 在mixin中不要使用super这种用法

(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

D

B

C

A


super真的是调用父类吗_初始化



举报

相关推荐

0 条评论