python concreteChildClass.py Traceback (most r-6ren">
gpt4 book ai didi

python - "No module named abc_base"

转载 作者:太空狗 更新时间:2023-10-30 01:44:48 24 4
gpt4 key购买 nike

我正试图在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com