Python子类继承父类的构造函数
前言
子类继承父类的构造函数__init__,具体有几种情况?看到菜鸟教程总结的非常不错,特意记录下来,也方便自己后面翻阅。
详情
-
情况一
子类不重写
__init__方法,实例化后会自动调用父类的__init__方法。实例
class Father: def __init__(self, name): self.name = name print(f'name: {self.name}') def getName(self): return f'Father {self.name}' class Son(Father): def getName(self): return f'Son {self.name}' if __name__=='__main__': son = Son('runoob') print(son.getName())输出结果:
name: runoob Son runoob -
情况二
子类重写
__init__方法,实例化后会覆盖父类的__init__方法,父类的__init__方法不再执行。实例
class Father: def __init__(self, name): self.name = name print(f'name: {self.name}') def getName(self): return f'Father {self.name}' class Son(Father): def __init__(self, name): print("hi") self.name = name def getName(self): return f'Son {self.name}' if __name__=='__main__': son = Son('runoob') print(son.getName())输出结果:
hi Son runoob -
情况三
子类重写
__init__方法,同时又需要调用父类的__init__方法,使用super()函数,super()是一个特殊函数,可以调用父类的__init__方法。实例
class Father: def __init__(self, name): self.name = name print(f'name: {self.name}') def getName(self): return f'Father {self.name}' class Son(Father): def __init__(self, name): super().__init__(name) print("hi") self.name = name def getName(self): return f'Son {self.name}' if __name__=='__main__': son = Son('runoob') print(son.getName())输出结果:
name: runoob hi Son runoob

浙公网安备 33010602011771号