为什么我无法导入 ABC 但 ABCMeta 已正确导入?
Why I cant import ABC but ABCMeta is correctly imported?
我得到了使用 python 的 abc 包的示例代码。我使用 pip 在我的笔记本电脑上安装了 abc。在 PATH 中正确设置了包文件夹的路径。
我得到的示例代码是:
'from abc import ABC, abstractmethod'
如果我尝试 运行,我得到了 'ImportError: cannot import name ABC'。但是,如果我尝试仅导入 'abstractmethod',则导入有效。
我也可以导入 ABCMeta,只是不能导入 ABC。
'from abc import ABC' <- 不工作
'from abc import ABCMeta, abstractmethod' <-确实如此
好像是在同一个包里,我用pip安装包的时候没有报错。那么,为什么我可以导入 'ABCMeta' 和 'abstractmethod' 但不能导入 'ABC'?
abc.ABC
已在 Python 3.4 中引入。
因此,您应该使用 ≥ 3.4 的版本来 运行 代码。
bpo-16049: Add abc.ABC class to enable the use of inheritance to create ABCs, rather than the more cumbersome metaclass=ABCMeta. Patch by Bruno Dupuis.
我在这里找到了我要找的东西:
http://www.programmersought.com/article/7351237937/
基本上,在 python 2.7(这是我必须使用的版本,因为老板的原因)你改用 ABCMeta 并将你的 class 设置为从 ABCMeta 继承,如:
from abc import ABCMeta, abstractmethod
class MyBase():
__metaclass__ = ABCMeta
@abstractmethod
def func(self):
这对我很有帮助,我希望对其他人也有帮助。
我得到了使用 python 的 abc 包的示例代码。我使用 pip 在我的笔记本电脑上安装了 abc。在 PATH 中正确设置了包文件夹的路径。
我得到的示例代码是:
'from abc import ABC, abstractmethod'
如果我尝试 运行,我得到了 'ImportError: cannot import name ABC'。但是,如果我尝试仅导入 'abstractmethod',则导入有效。
我也可以导入 ABCMeta,只是不能导入 ABC。
'from abc import ABC' <- 不工作
'from abc import ABCMeta, abstractmethod' <-确实如此
好像是在同一个包里,我用pip安装包的时候没有报错。那么,为什么我可以导入 'ABCMeta' 和 'abstractmethod' 但不能导入 'ABC'?
abc.ABC
已在 Python 3.4 中引入。
因此,您应该使用 ≥ 3.4 的版本来 运行 代码。
bpo-16049: Add abc.ABC class to enable the use of inheritance to create ABCs, rather than the more cumbersome metaclass=ABCMeta. Patch by Bruno Dupuis.
我在这里找到了我要找的东西:
http://www.programmersought.com/article/7351237937/
基本上,在 python 2.7(这是我必须使用的版本,因为老板的原因)你改用 ABCMeta 并将你的 class 设置为从 ABCMeta 继承,如:
from abc import ABCMeta, abstractmethod
class MyBase():
__metaclass__ = ABCMeta
@abstractmethod
def func(self):
这对我很有帮助,我希望对其他人也有帮助。