本文共 1566 字,大约阅读时间需要 5 分钟。
python中类的初始化都是__init__()。所以父类和子类的初始化方式都是__init__(),但是如果子类初始化时没有这个函数,那么它便调用父类的__init__();如果实现了这个函数,就会覆盖父类的初始化函数。如果继承父类的__init__(),就需要在子类中显示调用这个函数。实现如下:
情况1:子类没有__init__函数,那么直接执行父类的__init__函数
#coding=utf-8class Animal(object): def __init__(self): self.name='I am the super class'class Panda(Animal): def ok(): print("I am the son class!!!")if __name__=='__main__':panda=Panda()print(panda.name)a = Panda()#子类是没有构造函数的,那么直接调用父类的构造函数print(a.name)
class Animal(object): def __init__(self): self.name = "我是父类"class Panda(Animal): def __init__(self): super().__init__() #使用super的方式来显示调用父类的__init__()函数 # 也可以使用第二种super初始化的方式 super(Panda, self).__init__()if __name__=="__main__": panda = Panda() #实例化Panda print(panda.name)
我是父类
class Animal(object): def __init__(self): self.name = "我是父类" def A(self): #父类中的A方法 print("父类的A方法")class Panda(Animal): def __init__(self): super().__init__() self.myname = "panda" def A(self): #子类中的A方法 print("子类的A方法") def B(self): self.A() #self调用A super().A() #super调用Aif __name__=="__main__": panda = Panda() panda.B() #通过B函数来调用A方法,查看self和super的区别
子类的A方法 #我们说过self是先从自身找方法,没有再去父类找父类的A方法 #而super则是直接从父类中找
参考自: https://www.jb51.net/article/163991.htm
转载地址:http://bjpq.baihongyu.com/