Python中新式類 經典類的區別(即類是否繼承object)


首先什么是新式類 經典類呢:

#新式類是指繼承object的類
class A(object):
      ...........
#經典類是指沒有繼承object的類
class A:
     ...........

Python中推薦大家使用新式類 1.新的肯定好哈,已經兼容經典類 

              2.修復了經典類中多繼承出現的bug

下面我們着重說一下多繼承的bug 如圖:

BC 為A的子類, D為BC的子類 ,A中有save方法,C對其進行了重寫

在經典類中 調用D的save方法 搜索按深度優先 路徑B-A-C, 執行的為A中save 顯然不合理
在新式類的 調用D的save方法 搜索按廣度優先 路徑B-C-A, 執行的為C中save

對深度優先,廣度優先 有不解的點這里

#經典類
class A:
    def __init__(self):
        print 'this is A'

    def save(self):
        print 'come from A'

class B(A):
    def __init__(self):
        print 'this is B'

class C(A):
    def __init__(self):
        print 'this is C'
    def save(self):
        print 'come from C'

class D(B,C):
    def __init__(self):
        print 'this is D'

d1=D()
d1.save()  #結果為'come from A

 

#新式類
class A(object):
    def __init__(self):
        print 'this is A'

    def save(self):
        print 'come from A'

class B(A):
    def __init__(self):
        print 'this is B'

class C(A):
    def __init__(self):
        print 'this is C'
    def save(self):
        print 'come from C'

class D(B,C):
    def __init__(self):
        print 'this is D'

d1=D()
d1.save()   #結果為'come from C'

 


免責聲明!

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



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