从 Python2.2 开始,Python 引入了 new style class。虽然从使用上看,new style class 与 classic class 没有太大的差别, 但是在实现上, 两者有很大的区别。比如,下文所展示的基类搜索机制上的不同。
#!/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 的基类搜索机制是广度优先遍历。