作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
python concreteChildClass.py Traceback (most r-6ren">
我正试图在 python 中实现一个抽象类(实际上是在 django 应用程序中),并且遇到了这种疯狂:
>python concreteChildClass.py
Traceback (most recent call last):
File"concreteChildClass.py, line 1, in <module>
from abc_base import AbstractBaseClass
ImportError: No module named abc_base
我已将我的问题归结为这些在我的环境中重现错误的文件:
抽象类.py
import abc
class abstractBaseClass(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def load(self, input):
"""Retrieve data from the input source and return an object."""
return
具体子类.py
from abc_base import AbstractBaseClass
class ConcreteChildClass(object):
def load(self, input):
return input.read()
这是我的python版本信息
>>> import sys
>>> print sys.version
2.7.3 (default, Jan 2 2013, 13:56:14)
[GCC 4.7.2]
我是 python 的新手(因为这个问题可能很明显),但我不知道如何找到“abc”而不是“abc_base”。我的阅读和谷歌搜索使我无法找到这个问题的答案。提前致谢,如果这是一个愚蠢的问题,我们深表歉意。
最佳答案
我假设您正在关注 this教程?
您所犯的错误(公平地说,本教程对此并不清楚)是假设 abc_base
是标准库中某个模块的名称。
相反,它恰好是教程中第一个 python 文件的名称,其中定义了 PluginBase
类。
要使代码适合您,您需要从任何包含所需基类的文件导入,而不是从 abc_base
导入。
注意:因为类名和文件名在您的示例中是相同的,所以我继续更改文件名以更清楚地说明正在发生的事情以及您需要导入的内容:
base.py
import abc
# Note: You forgot to capitalize the 'A' in the original
class AbstractBaseClass(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def load(self, input):
"""Retrieve data from the input source and return an object."""
return
混凝土.py
from base import AbstractBaseClass
class ConcreteChildClass(AbstractBaseClass):
def load(self, input):
return input.read()
关于python - "No module named abc_base",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18875511/
我正试图在 python 中实现一个抽象类(实际上是在 django 应用程序中),并且遇到了这种疯狂: >python concreteChildClass.py Traceback (most r
我是一名优秀的程序员,十分优秀!