我正在尝试下面的python代码:
from abc import ABCMeta, abstractmethod
class Bar:
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
pass
class Bar2(Bar):
def foo2(self):
print("Foo2")
b = Bar()
b2 = Bar2()
我认为让@abstractmethod
确保我的父类是抽象的,而子类也是抽象的,因为它没有实现抽象方法。但是在这里,我没有尝试实例化这两个类的错误。
任何人都可以解释原因吗?
答案 0 :(得分:5)
您必须将Bar
类的元类设置为ABCMeta
。
Python 2:
class Bar:
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
pass
Python 3:
class Bar(object, metaclass=ABCMeta):
@abstractmethod
def foo(self):
pass