91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-07 04:52:33 來源:ITPUB博客 閱讀:169 作者:Winter 欄目:編程語言

python中的類分為經典類(舊式類)和新式類。python的新式類是2.2版本為了統一類和實例引進來的。

在Python2.x中默認都是經典類,只有顯式繼承了object的才是新式類。
如下所示:

# 新式類,顯示繼承object
class A(object):
    pass
# 經典類
class A():
    pass
# 經典類
class A:
    pass

在python3.x中取消了經典類,默認都是新式類,并且新式類不需要顯式的繼承object對象。如下所示,這三種寫法都可以,并無區別:

# 第一種
class A(object):
    pass
# 第二種
class A():
    pass
# 第三種
class A:
    pass

新式類和經典類的區別

  • 新式類都從object繼承,經典類不需要。
  • 經典類的 MRO(method resolution order 基類搜索順序)算法是采用深度優先搜索,而新式類的 MRO算法采用C3算法廣度優先搜索。
  • 新式類相同父類只執行一次構造函數,經典類重復執行多次。

新式類和經典類最大的不同在于繼承搜索的順序發生了改變。
經典類采用深度優先搜索,也就是先深入繼承樹左側查找,然后再返回,開始查找右側:

class A:
    def show(self):
        print("From A")
class B(A):
    def show(self):
        print("From B")
class C(A):
    def show(self):
        print("From C")
class D(B, C):
    pass
d = D()
d.show()
# From B

新式類采用廣度優先搜索,先在水平方向查找,再向上查找:

class A(object):
    def show(self):
        print("From A")
class B(A):
    def show(self):
        print("From B")
class C(A):
    def show(self):
        print("From C")
class D(B, C):
    pass
d = D()
d.show()
# From C

參考: https://www.9xkd.com/

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁强县| 塔城市| 杭锦旗| 阿鲁科尔沁旗| 荔波县| 宣化县| 阳城县| 北票市| 太原市| 手游| 吐鲁番市| 荃湾区| 新泰市| 安吉县| 娄烦县| 开阳县| 漳州市| 元朗区| 怀远县| 蓬安县| 定襄县| 微山县| 神木县| 鄯善县| 舒城县| 电白县| 库尔勒市| 桦川县| 济南市| 礼泉县| 北辰区| 明星| 青州市| 来凤县| 余姚市| 邹城市| 武冈市| 玉山县| 正蓝旗| 沧州市| 东兴市|