关于 python 类与继承中方法调用 的 一个小知识点记录
Posted gtq7512
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 python 类与继承中方法调用 的 一个小知识点记录相关的知识,希望对你有一定的参考价值。
(1)D类,多继承于C类与B类,C类与B类继承于A类。C类中没用__init__(), C类的实例化会先寻找第一个继承类是否存在__init__(),也就是B类的__init__()。因为python3中使用的是广度优先的方法,寻找路径为D-->B-->C-->A
关于其他方法的继承,也是这个顺序。
class A(object): def __init__(self): print("i am A") def call(self): print("A CALL") class B(A): def __init__(self): print("i am B") def call(self): print("B CALL") class C(A): def __init__(self): print("i am C") def call(self): print("C CALL") class D(B,C): pass d= D() d.call()
(2)C类继承于B类与A类,A类继承于_A类。 A 、B 和_A类中都有一个call()方法, _A类中有一个xcall()方法,是用来调用_A中的cal()的。
实例化C类后,c的实例调用_A的xcall()方法,实现的其实是B类中的call(). 这个也是广度优先机制。
class _A(object): def __init__(self): print("i am _A") def xcall(self): self.call() def call(self): print("A CLL") class A(_A): def __init__(self): print("i am A") def call(self): print("A CLL") class B(object): def __init__(self): print("i am B") def call(self): print("B CLL") class C(B,A): pass
以上是关于关于 python 类与继承中方法调用 的 一个小知识点记录的主要内容,如果未能解决你的问题,请参考以下文章