下面的代码:
class Category(abc.ABC):
foo = {"bar"}
尽管继承了abc.ABC
,但我可以很好地示例化Category
:
>>> a = Category()
>>>
而我希望它会引发如下错误。
>>> class Foo(abc.ABC):
... @abc.abstractmethod
... def bar(self):
... return "baz"
...
>>> f = Foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class Foo with abstract methods bar
>>>
看起来这是因为Category
没有抽象方法。我如何确保尝试示例化Category
会引发异常?
1条答案
按热度按时间nbewdwxp1#
这里有一个方法:
如果你想在几个相关的抽象类之间共享这个行为,这也会很有帮助。例如:
在上面的例子中,如果你试图创建
Category
或CategoryGroup
对象,你会得到一个TypeError,如下所示: