Here is a simplified code of my main code illustrating the behaviour I obtain.
Suppose I have a main class (MAIN) and two classes (A,B) inheriting from it. This main class has a method which is overwriten by A but not by B, which means that B inherits the method from main.
Then I have a class D which inherits from A and from B, and has a method which calls the aforementioned method. From what I have understood in the way multiple inheritance work, if I define D as class D(A,B) then if A and B have a shared method, calling D.method() will call A.method, and vice-versa (i.e if class D(B,A) then B.method is called. The following code exemplifies this text.
class MAIN(object): def __init__(self): pass def print(self): print('HELLO MAIN') class A(MAIN): def __init__(self): pass def print(self): print('HELLO A') class B(MAIN): def __init__(self): pass class C(A,B): def __init__(self): pass def Cprint(self): self.print() c = C() c.Cprint() class C(B,A): def __init__(self): pass def Cprint(self): self.print() c = C() c.Cprint() However this code always print 'HELLO A', i.e even in the case class C(B,A) I don't get a HELLO MAIN as I would expect. What is happening here? Thanks so much in advance