python多重继承init的问题

继承的时候,init父类时,平时用ide写代码习惯了这样写,因为敲一个super再回车就有了这么一行

1
super(C, self).__init__()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A:
def __init__(self):
self.a = "a"

class B:
def __init__(self):
self.b = "b"

class C(A,B):
def __init__(self):
super(C, self).__init__()

if __name__ == '__main__':
c = C()
print(c.__dict__)
# >>> {'a': 'a'}

可以看出问题了,C类只init了A类,并没有init B类
下面是我瞎摸出来的解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A:
def __init__(self):
self.a = "a"


class B:
def __init__(self):
self.b = "b"


class C(A, B):
def __init__(self):
A.__init__(self)
B.__init__(self)


if __name__ == '__main__':
c = C()
print(c.__dict__)
# >>> {'a': 'a', 'b': 'b'}