python中多继承C3算法研究

在python的面向对象继承问题中,单继承简单易懂,全部接受传承类的属性,并可添加自带属性,

但是,在多继承情况下,会遇到多个被继承者的顺序问题,以及多次继承后查找前几次继承者需求属性时,可能不易发现

99%的多继承可以通过肉眼推测被继承者路径,逐级返回查找需求,但是又有一部分因为继承次数多,被继承几经转折,而不好区分,易被误导,

在这时,可以使用C3算法分析,目前心得记录下,以后遇到温习,补充:
99%看: C3算法在python3中以广度优先为基本原则,

  怎         1.先按继承先后顺序,走先继承者一条路径,

  么                  如遇到下一级被继承者可以被别的路径到达,停止,(遵循广度优先原则,) 回到第二位继承者分支路重新出发

                      走到前面停止位时,如果只有自己能连接到,通过继续走,中途遇到可以被别的路到达情况,继续让路重来,让后来者
  看        2.逐次等待后来路走完所有路后,最后一条到达最初被继承者,找到需求.

                  

C3算法原理

验证自己的继承推断时候出错,可以用python.mro()打印查看
将被继承者逐级写出类公式,求最后以位继承者.mro()

目前也就者理解呢,慢慢学习ing!!!

                               

猜你喜欢

转载自www.cnblogs.com/OB19227/p/10609717.html