2016-01-23 37 views

回答

1

這取決於你在什麼NonModelCls。對於屬性和方法的搜索順序從左至右(https://docs.python.org/3/tutorial/classes.html?highlight=inheritence#multiple-inheritance)。

比方說,你有這些類:

class A: 
    def __init__(): 
     print('A') 
     super(A, self).__init__() 


class B: 
    def __init__(): 
     print('B') 
     super(B, self).__init__() 


class C(A,B): 
    pass 

class D(B,A): 
    pass 

然後調用C和d將導致:

>>>C() 
A 
B 
<__main__.C object at 0x7f51d3efe0f0> 
>>>D() 
B 
A 
<__main__.D object at 0x7f51d3efe0b8> 

所以你的情況,如果NonModelCls有相同名稱的一個方法models.Model方法,如save,那麼它會在Bar類中重寫Model.save,而它得到Foo類忽略。