Python中的抽象基类
abc —抽象基类
使用方法
import abc
class A(abc.ABC):
# 定义抽象方法
@abc.abstractmethod
def a(self):
pass
class B(A):
# 必须实现,否则运行报错
def a(self):
pass
定义抽象基类必须继承于abc.ABC
类,或者使用元类方式实现
class A(metaclass=abc.ABCMeta)
两者实现效果相同,当继承抽象基类同时在方法上使用了装饰器@abc.abstractmethod
则代表子类必须实现该方法,否则会报错,但是编译器不会提示。
定义抽象类方法
class C(ABC):
@classmethod
@abstractmethod
def my_abstract_classmethod(cls, ...):
抽象静态方法
class C(ABC):
@staticmethod
@abstractmethod
def my_abstract_staticmethod(...):
抽象属性
class C(ABC):
@property
def x(self):
...
@x.setter
@abstractmethod
def x(self, val):
...