抽象方法是父类的一个方法, 父类没有实现这个方法, 父类是不可以实例化的. 子类继承父类, 子类必须实现父类定义的抽象方法, 子类才可以被实例化. Python中的abc提供了@abstractmethod装饰器实现抽象方法的定义。
抽象类的实现
from abc import ABC, abstractmethod
class Foo(ABC):
@abstractmethod
def fun(self):
"""
你需要在子类中实现该方法, 子类才允许被实例化
"""
class SubFoo(Foo):
def fun(self):
print("子类实现父类的抽象方法")
if __name__ == "__main__":
sf = SubFoo()
sf.fun()
浅谈抽象类
类, 是从一堆对象中抽象出来的, 比如猫类
,狗类
,人类
抽象类, 是从一堆类中抽象出来的, 比如上面的三个类可以抽取出动物类
抽象类的特点是不能给实例化, 只能被子类继承, 由子类实现了父类的抽象方法后, 子类才能被实例化
Python中的接口, 抽象类, 抽象函数
Python中的接口是个弱概念, 从Java中的概念延伸而来, Python中通过抽象类和抽象方法来实现一个接口, 例如Python3中, class 类继承的 abc.ABC
即为抽象类, @abstractmethod
装饰器使其装饰的函数成为抽象函数
一般情况下, Python多在单继承的情况下使用抽象类