Python新式類與經典類的區別

2021-08-14 08:43:27 字數 710 閱讀 7558

#經典類和新式類的繼承順序

class a:

def

__init__(self):

print('a')

class b(a):

# def __init__(self):

# print('b')

pass

class c(a):

# def __init__(self):

# print('c')

pass

class d(b,c):

#這種情況,是先走本身的建構函式,然後根據順序走其他的:廣度優先,橫向查詢

#為什麼這樣說,因為在b,c時沒有在向b、c的父類查詢,而是作為最後查詢

#和上邊的相反的查詢就是深度優先,記住python3都是廣度優先,

#在python2經典類是按深度優先繼承的,新式類是按廣度優先繼承的

#python3都是按照廣度優先繼承的,class a: 經典類class a(object):新式類

# def __init__(self):

# print('d')

pass

# 如果它們都有建構函式,那麼建構函式會怎麼走

# 測試一下吧

obj = d()

自己動手試一試吧!

python 新式類與經典類的區別

在python 2及以前的版本中,由任意內建型別派生出的類 只要乙個內建型別位於類樹的某個位置 都屬於 新式類 都會獲得所有 新式類 的特性 反之,即不由任意內建型別派生出的類,則稱之為 經典類 python2.x中,預設都是經典類,只有顯式繼承了object才是新式類,即 class person...

Python新式類與經典類 舊式類 的區別

新式類都從object繼承,經典類不需要。新式類的 mro method resolution order 基類搜尋順序 演算法 採用c3演算法廣度優先搜尋,而舊式類的 mro演算法 是採用深度優先搜尋 新式類相同父類只執行一次建構函式,經典類重複執行多次。截止到python2.1,只存在舊式類。舊...

Python新式類與經典類 舊式類 的區別

新式類都從object繼承,經典類不需要。新式類的 mro method resolution order 基類搜尋順序 演算法 採用c3演算法廣度優先搜尋,而舊式類的 mro演算法 是採用深度優先搜尋 新式類相同父類只執行一次建構函式,經典類重複執行多次。截止到python2.1,只存在舊式類。舊...