mro之C3演算法

2022-05-10 00:42:12 字數 857 閱讀 5066

# c3演算法 歸併演算法

class a(object): pass

class b(a): pass

class c(a): pass

class d(b): pass

class e(c): pass

class f(d, e): pass

print(f.__mro__)

#########################

# 第一步先找到繼承的父類的mro

# d = [d, b, a, o]

# e = [e, c, a, o]

# 第二步 把父類這兩個mro 和 de 進行歸併

# 取每個表表頭 並且其他表內容部分不能含有我們要取的那個表頭

# 如果不滿走就去取第二個表頭

# merge([dbao], [ecao], [de])

# d在表頭(第一位,而其他的內容部分都沒有d,[bao],[cao],故滿足要求)

# fd merge([bao], [ecao], [e])

# b在表頭(第一位,而其他的內容部分都沒有b,[ao],[cao],故滿足要求)

# fdb merge([ao], [ecao], [e])

# a在表頭(第一位,而其他的內容部分有a,[ao],[cao],故不滿足要求,看第二個列表[ecao])

# e在表頭(第一位,而其他的內容部分都沒有e,[ao],[cao],故滿足要求

# fdbe merge([ao], [cao])

# c在表頭(第一位,而其他的內容部分都沒有c,[ao],[ao],故滿足要求,ao以此類推

# fdbec merge([ao], [ao])

# fdbecao

mro和c3 演算法

mro案例 class a pass class b a pass class c a pass class d b,c pass class e c,a pass class f d,e pass class g e pass class h g,f pass 計算方法 先將每乙個類的繼承mro,...

Python之MRO及其C3演算法

你真的理解python中mro演算法嗎?python mro c3演算法 mro method resolution order方法解析順序,python支援多繼承,該方法用於解決父類存在同名函式的時存在的二義性問題。單調性 某乙個類繼承的父類滿足從左到右的順序解析 從左到右遞迴地從左到右解析 獲取...

類的MRO屬性 C3演算法

c3演算法 class a object pass class b a pass class c a pass class d b pass class e c pass class f d,e pass f的mro順序 第一步 找出f所有的父類的mro d dbao e ecao 第二部 把所有父...