Item 5: Method Resolution Order

class A(object):
    def __init__(self):
        print('A', end='')
class B(A):
    def __init__(self):
        super().__init__()
        print('B', end='')
class C(A):
    def __init__(self):
        super().__init__()
        print('C', end='')
class D(B, C):
    def __init__(self):
        super().__init__()
        print('D', end='')
A(); print();  B(); print();
C(); print();  D(); print();