我正在尝试创建一个抽象基类。 使用python 3的语法时,它可以完美工作。 但是,当我切换到python 2.7的语法时,它将无法正常工作。
以下代码是用2.7语法编写的,如果我运行它,它将运行,而当它不运行时,foo
类中将没有StillAbstract
方法。
from abc import ABCMeta, abstractmethod
class Abstract:
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
pass
class StillAbstract(Abstract):
pass
if __name__ == '__main__':
a = StillAbstract()
但是当我以3+语法编写它时,它会按应有的方式工作,但会失败,并出现抽象基类给出的错误。
from abc import ABCMeta, abstractmethod
class Abstract(metaclass=ABCMeta):
@abstractmethod
def foo(self):
pass
class StillAbstract(Abstract):
pass
if __name__ == '__main__':
a = StillAbstract()
知道为什么会那样吗?