美文网首页
python继承类经典算法

python继承类经典算法

作者: thebeeman | 来源:发表于2017-04-28 10:41 被阅读0次

#! /usr/bin/python

# -*- coding:utf-8 -*-

class P1():

  def foo(self):

    print 'p1-foo'

class P2():

  def foo(self):

    print 'p2-foo'

  def bar(self):

    print 'p2-bar'

class C1(P1,P2):

  pass

class C2(P1,P2):

  def bar(self):

    print 'C2-bar'

class D(C1,C2):

  pass

if __name__ =='__main__':

  d=D()

  d.foo()

  d.bar()

执行的结果:

p1-foo

p2-bar

将代码实例,画了一个图,方便理解:

从上面经典类的输出结果来看,

实例d调用foo()时,搜索顺序是 D => C1 => P1,

实例d调用bar()时,搜索顺序是 D => C1 => P1 => P2

总结:经典类的搜索方式是按照“从左至右,深度优先”的方式去查找属性。d先查找自身是否有foo方法,没有则查找最近的父类C1里是否有该方法,如果没有则继续向上查找,直到在P1中找到该方法,查找结束。

相关文章

网友评论

      本文标题:python继承类经典算法

      本文链接:https://www.haomeiwen.com/subject/vsuozttx.html