可能存在的误区
python允许子类同时继承多个父类。但是在子类初始化父类时,单继承和多继承稍有不同。使用单继承的初始化方法会导致父类属性无法全部继承。
单继承方式是错误的,如下:
class A:
def __init__(self):
self.a = 'a'
class B:
def __init__(self):
self.b = 'b'
class C(A, B):
def __init__(self):
super().__init__()
c = C()
print(c.a)
print(c.b)
能够正确打印出a的值,但是print(c.b)会报错:
AttributeError: ‘C’ object has no attribute ‘b’
正确继承方法
同时继承多个父类时,可以显式的初始化每个父类,并且是用父类名初始化。如下所示:
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)
c = C()
print(c.a)
print(c.b)