從 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 的基類搜索機制是廣度優先遍歷。