为什么我不能导入 ABC 但 ABCMeta 被正确导入?

Ano*_*non 4 python abc

我得到了一个使用 python 的 abc 包的示例代码。我使用 pip 在我的笔记本电脑中安装了 abc。到包文件夹的路由在 PATH 中正确设置。

我得到的示例代码是:

'从 abc 导入 ABC,抽象方法'

如果我尝试运行它,我会收到“导入错误:无法导入名称 ABC”。但是,如果我尝试仅导入“abstractmethod”,则导入有效。

我也可以导入 ABCMeta,只是不能导入 ABC。

'从 abc 导入 ABC' <- 不工作

'from abc import ABCMeta, abstractmethod' <- 确实如此

它似乎在同一个包中,当我通过 pip 安装包时,我没有收到错误消息。那么,为什么我可以导入 'ABCMeta' 和 'abstractmethod' 而不能导入 'ABC'?

Ano*_*non 6

我在这里找到了我想要的东西:

http://www.programmersought.com/article/7351237937/

基本上,在 python 2.7(这是我必须使用的版本,因为老板的原因)你改用 ABCMeta 并将你的类设置为从 ABCMeta 继承,如:

from abc import ABCMeta, abstractmethod                                         

class MyBase():                                                                 
    __metaclass__ = ABCMeta                                                     
    @abstractmethod                                                             
    def func(self):                                                             
Run Code Online (Sandbox Code Playgroud)

这对我很有帮助,我希望对其他人也有帮助。