从 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 的基类搜索机制是广度优先遍历。
联系客服