抽象类
定义抽象类
定义抽象类需要导入abc模块 from abc import ABCMeta,abstractmethod.
from abc import ABCMeta,abstractclassmethod
#抽象类
class Animal (metaclass=ABCMeta):
#抽象方法
@abstractclassmethod
def eat(self):pass
@abstractclassmethod
def sleep(self):pass
#可以定义普通的方法
def play (self):
print('转悠')
class Dog(Animal):
def eat(self):
print('吃狗粮')
def sleep(self):
print('乖乖的睡觉')
dog=Dog()
dog.play()
继承原理
class A(object):
def test(self):
print(' A test')
class B(A):
def test(self):
print(' B test')
class C(A):
def test(self):
print(' C test')
class D(B, C):
def test(self):
print(' D test')
print(D.mro())
打印结果
#[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
在每个方法中都调用super().func()方法,查看执行顺序。
class A(object):
def test(self):
print(' A test')
class B(A):
def test(self):
super().test()
print(' B test')
class C(A):
def test(self):
super().test()
print(' C test')
class D(B, C):
def test(self):
super().test()
print(' D test')
d = D()
d.test()
print(D.mro())
打印结果
'''[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]'''
源码经过测试 均可正常使用