python-abc

abc基于python type和metaclass,同样会有metaclass多重继承等问题

①抽象方法可以有实现;
②子类在__new__过程中如果子类没有声明抽象方法会报错,子类如果重写了__new__方法并且没有调用object.new,那么abc的检测抽象方法实现可能会失效;
③子类可以通过super来引用抽象类中的抽象方法

  • ABC.__metaclass__=ABCMeta
  • 创建一个抽象类型
    • 可以通过显式指定metaclass,class Demo(metaclass=ABCMeta)
    • 可以通过继承ABC来继承ABC.__metaclass__属性,来指定ABCMeta元类,使用ABCMeta类创建抽象基类
  • 声明为抽象方法
    • 在方法上添加装饰器@abstractmethod

原文地址:https://www.cnblogs.com/bonus_scene/p/15189388.html