2013-11-28 53 views
0

如果您從許多實現了相同方法的類繼承,那麼哪種行爲將提供Python?Python中的多繼承,成熟類中的相同方法

Class A(): 
    def method(): 
     pass 

Class B(): 
    def method(): 
     pass 

Class C(A,B): 
    pass 
+3

你有沒有簡單地試着這樣做? – Mailerdaimon

+2

查找「方法解析順序」(mro)的概念。 – glglgl

+0

這也取決於Python版本; Python 2或3?如果Python 2,'A()'是否從'object'繼承? –

回答

1

這個問題相當複雜......至少有三種不同的Python方法解析順序算法。

對於簡單的情況下並非你所期望的,對於細微的差別看到

http://python-history.blogspot.it/2010/06/method-resolution-order.html

+1

三?我只計算兩個;舊風格和新風格。 Python 3默認使用新風格,在Python 2中,您需要從'object'繼承來做到這一點。第三是什麼? –

+0

來自Guido的博客文章:「Python至少知道三種不同的MRO算法:經典,Python 2.2新風格和Python 2.3新風格(又名C3)」。 – 6502

+0

啊,我通常忽略2.2新風格,因爲那只是一個版本,並且被認爲是一個bug。從2.3開始,只有2個變種,你通常可以假設沒有人再使用2.2。 –