import abc
class D:
def __init__(self):
print("d")
class C(D):
def __init__(self):
super(C, self).__init__()
print("c")
class B(D):
def __init__(self):
super(B, self).__init__()
print("b")
class A(B, C):
def __init__(self):
super(A, self).__init__()
print("a")
A()
class Animal(metaclass=abc.ABCMeta):
@abc.abstractmethod
def call(self):
pass
@abc.abstractclassmethod
def test(cls):
pass
class Dog(Animal):
def call(self):
print("wang wang wang")
@classmethod
def test(cls):
print(cls.__dict__)
class Cat(Animal):
def call(self):
print("miao miao miao")
@classmethod
def test(cls):
print(cls.__dict__)
d = Dog()
c = Cat()
c.call()
d.call()