super


In [26]:
class A(object):
    def __init__(self):
        pass    
    def zeroa(self):
        print('a-zero')
        return self
        
class B(object):
    def __init__(self):
        pass    
    def zero(self):
        print('b-zero')
        return self        
    def one(self):
        print('b-one')
        return self        
    def two(self):
        print('c-two')
        return self        
                
class C(object):
    def __init__(self):
        pass
        super()
    def zero(self):
        print('c-zero')
        return self        
    def one(self):
        print('c-one')
        return self        
    def two(self):
        print('d-two')  
        return self

In [29]:
class D(A, B, C):
    def __init__(self):
        pass
        
    def two(self):
        print('d-two')

d = D().zero()


b-zero

In [31]:
D.__bases__


Out[31]:
(__main__.A, __main__.B, __main__.C)

In [32]:
class A:
    def who_am_i(self):
        print("I am a A")

class B(A):
    def who_am_i(self):
        print("I am a B")

class C(A):
    def who_am_i(self):
        print("I am a C")

class D(B,C):
    def who_am_i(self):
        print("I am a D")

d1 = D()
d1.who_am_i()


I am a D

In [41]:
class A(object):
    def say_hello(self):
        print ('A says hello')

class B():
    def say_hello(self):
        super(B, self).say_hello()
        print ('B says hello')

class C():
    def say_hello(self):
        super(C, self).say_hello()
        print ('C says hello')

class D(A, B):
    def say_hello(self):
        super(D, self).say_hello()
        print ('D says hello')

DD = D()
DD.say_hello()


A says hello
D says hello

In [42]:
class X():
    def who_am_i(self):
        print("I am a X")
    
class Y():
    def who_am_i(self):
        print("I am a Y")
    
class A(X, Y):
    def who_am_i(self):
        print("I am a A")
    
class B(Y, X):
     def who_am_i(self):
         print("I am a B")

class F (A, B):
    def who_am_i(self):
        print("I am a F")


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-42-8a455716e187> in <module>()
     15          print("I am a B")
     16 
---> 17 class F (A, B):
     18     def who_am_i(self):
     19         print("I am a F")

TypeError: Cannot create a consistent method resolution
order (MRO) for bases X, Y

In [ ]: