分享

Python 新式类与经典类的区别

 天才白痴书馆 2015-04-18

从 Python2.2 开始,Python 引入了 new style class。虽然从使用上看,new style class 与 classic class 没有太大的差别, 但是在实现上, 两者有很大的区别。比如,下文所展示的基类搜索机制上的不同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python
""" classic class """
class CA():
    var = 'a'
class CB(CA):
    pass
class CC(CA):
    var = 'c'
class CD(CB, CC):
    pass
""" new-style class """
class NA(object):
    var = 'a'
class NB(NA):
    pass
class NC(NA):
    var = 'c'
class ND(NB, NC):
    pass
if __name__ == "__main__":
    print CD.var
    print ND.var

运行上述代码,CD.var 的值将是 'a', 而 ND.var 的值将是 'c'。这说明 classic class 的基类搜索机制是深度优先遍历,而 new style class 的基类搜索机制是广度优先遍历

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多