python中經典類和新式類的區別


要知道經典類和新式類的區別,首先要掌握類的繼承。類的繼承的一個優點就是減少代碼,而且使代碼看起來結構很完整。

那什么是經典類,什么是新式類呢?

經典類和新式類的主要區別就是類的繼承的方式 ,經典類遵循深度優先的規則,新式類遵循廣度優先的規則。至於什么是深度優先什么是廣度優先,可以看如下示例:

# Author:Zhang Zhao
class A(object):
    def __init__(self):
        print('A')
class B(A):
    pass
    # def __init__(self):
    #     print('B')
class C(A):
    def __init__(self):
        print('C')
class D(B,C):
    pass
    # def __init__(self):
    #     print('D')
r1 = D()
View Code

在新式類中,D是繼承B和C的,按照順序,首先去找B,如果在B里面能找到實例化對象,便繼承B,不再往別的地方尋找,如果沒有,就會接着找C,而不是找B的父親A!

但是在經典類中,如果B中找不到,它會優先考慮B的父親A,而不是C。

在python3中,都是遵循廣度優先的規則,在python2.7以前,應該是遵循深度優先的的規則。兩種規則沒有優劣之分。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM