参考:https://blog.csdn.net/a__int__/article/details/104600972
直白的说super().__init__(),就是继承父类的init方法,同样可以使用super()+. 其他方法名,去继承其他方法
先写一个父类,父类定义了一个__init__方法
class Person(object): def __init__(self, name=‘Person‘): self.name = name
在写三个继承自该父类的子类
# 直接继承 class Puple(Person): pass # 重写init方法 class Puple_Init(Person): def __init__(self, age): self.age = age # 重写init方法但是继承了父类的init方法 class Puple_Super(Person): def __init__(self, name, age): # self.name = name self.age = age super().__init__(name)
第一个子类Puple直接继承
第二个子类Puple_Init继承并写了init方法
第三个子类Puple_Super继承并写了init方法,还添加了super().__init__()
分别创建三个类的对象
pp = Puple() pp_i = Puple_Init(10) pp_s = Puple_Super(‘Puple_Super‘,12)
运行结果对比
第一个对象可以接调用父类的name属性
print(pp.name) # Person
第二个对象pp_i继承自父类,覆盖初始化def init增加属性age,不能调用name属性
# print(pp_i.name) # AttributeError: ‘Puple_Init‘ object has no attribute ‘name‘
第三个对象pp_s继承自父类,覆盖初始化init,增加了定义属性age,同时继承了父类的init,即相当于在init方法里也包含self.name = name 所以可以调用name属性
print(pp_s.name) # Puple_Super
原文:https://www.cnblogs.com/minseo/p/15005363.html