使用 abc,我可以使用以下内容创建抽象类:
from abc import ABC, abstractmethod
class A(ABC):
@abstractmethod
def foo(self):
print('foo')
class B(A):
pass
obj = B()
这将失败,因为 B 没有定义方法 foo。 这模仿了 Java 中的抽象方法功能。
我想知道抽象类功能是否也存在于 Python 中,其中在没有任何抽象方法的情况下阻止了类的实例化。
请您参考如下方法:
在 Python 中创建抽象类的常规方法是引发内置异常 NotImplementedError。
class A(object):
def __init__(self):
raise NotImplementedError('abstract base class')
class B(A):
def __init__(self):
# don't call A.__init__ here.
pass
b = B()
# a = A() # This will fail.
