2013-11-28 36 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。 –