abc基于python type和metaclass,同样会有metaclass多重继承等问题
①抽象方法可以有实现;
②子类在__new__过程中如果子类没有声明抽象方法会报错,子类如果重写了__new__方法并且没有调用object.new,那么abc的检测抽象方法实现可能会失效;
③子类可以通过super来引用抽象类中的抽象方法
ABC.__metaclass__=ABCMeta
- 创建一个抽象类型
- 可以通过显式指定metaclass,
class Demo(metaclass=ABCMeta)
- 可以通过继承ABC来继承ABC.__metaclass__属性,来指定ABCMeta元类,使用ABCMeta类创建抽象基类
- 可以通过显式指定metaclass,
- 声明为抽象方法
- 在方法上添加装饰器
@abstractmethod
- 在方法上添加装饰器