用旧的方法使类抽象化是行不通的

时间:2019-01-18 09:49:45

标签: python abc

我正在尝试创建一个抽象基类。 使用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()

知道为什么会那样吗?

0 个答案:

没有答案