python继承类新式算法

#! /usr/bin/python

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

class P1(object):

  def foo(self):

    print 'p1-foo'

class P2(object):

  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__':

  print D.__mro__  #只有新式类有__mro__属性,告诉查找顺序是怎样的

  d=D()

  d.foo()

  d.bar()

执行的结果:

(, , , , , )

p1-foo

C2-bar

从上面新式类的输出结果来看,

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

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

总结:新式类的搜索方式是采用“广度优先”的方式去查找属性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容