1.Son继承Parent这个基类,可以直接调用基类中的方法, 但是,如果要在子类中__init__()方法下添加新属性, 需要主动调用基类的__init__()方法,因为,子类不会 自动调用基类的__init__()方法。 class Son(Parent): def __init__(self,name): Parent.__init__(self) self.name = ‘Mic‘ def run(self): pass 2.在基类方法之上,再添加一些操作: class Son(Parent): def run(self): print(‘---add---‘) Parent.run(self) # 注意:当前类创建的实例调用了run()方法,并不是在Parent类中实现; # --- >> 引入super() class Sun(Parent): def run(self): print(‘---add---‘) super(Son,self).run() # super()的优点在于,不需要指定基类继承方法,可以从所有的基类中 # 找到这个方法继承; # -- >> 在python3中对super做了简化: super().run() 3.多继承中的属性查找顺序 # 分别提供了两条线路:位置,特殊性: # 位置,表示继承时所在参数位置; # 特殊性,表示是否有父类,以及有几层父类; # 其实,基类查找的顺序是按照C3线性化算法确定的,而不是网上说的 # 深度优先,广度优先这样简单的算法; # 在类继承设计的过程中,可能会出验证的问题,位置与特殊性冲突: class X(object): pass clas Y(X): pass class Z(X,Y): pass # 上面的例子就会报错;TypeError
原文地址:https://www.cnblogs.com/pymkl/p/8277397.html
时间: 2024-11-03 13:05:54