如何在 Python 中抽象类或方法?
我尝试重新定义 __new__()
像这样:
class F:
def __new__(cls):
raise Exception("Unable to create an instance of abstract class %s" %cls)
但现在如果我创建一个继承自 F
G
这样:
class G(F):
pass
那么我也无法实例化 G
,因为它调用其超类的 __new__
方法。
有没有更好的方法来定义抽象类?
原文由 user1632861 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
abc
模块创建抽象类。根据您的 Python 版本,使用abstractmethod
装饰器声明方法抽象,并使用三种方式之一声明类抽象。在 Python 3.4 及更高版本中,您可以继承自
ABC
。在早期版本的 Python 中,您需要将类的元类指定为ABCMeta
。指定元类在 Python 3 和 Python 2 中有不同的语法。三种可能性如下所示:无论您使用哪种方式,您都无法实例化具有抽象方法的抽象类,但能够实例化提供这些方法具体定义的子类: