我最近接管了维护一个用 Python 编写并使用 web.py 的网站。我创建了一个我想导入的类,但我收到“TypeError:'module' object is not callable”错误。所有 .py 模块都存储在名为“lib”的目录中。在 lib 目录中有以下模块 - noun.py、verb.py、context.py、word.py、base.py。在 lib 目录中是 --init--.py 文件。我正在尝试将 noun.py 模块导入上下文模块。下面是 context.py 模块中用于导入其他模块的代码。
from lib import verb, word, base
这似乎适用于导入动词、单词和基本模块。但是当我在该语句的末尾添加名词以使其...
from lib import, verb, word, base, noun
我收到“TypeError:‘模块’对象不可调用”错误。我也试过...
import noun #Also produces the same error
所以我尝试了以下...
from noun import *
当我以这种方式导入模块时,错误被消除,但是当我引用名词模块的属性时,我得到错误“AttributeError:名词实例没有属性'get_stem_used'”。下面是名词模块的代码...
from base import base
class noun:
wordBase = None
stemBase = None
def __init__(self, pId):
b = base()
wrdBase = b.get_word_base(pId)
self.wordBase = wrdBase['base']
stmBase = b.get_stemBase(pId)
self.stemBase = stmBase['stem']
#Code to make sure the module is instantiated correctly and the data is validated
def get_output(self):
return self.wordBase
def get_stem_used(self):
return self.stemBase
verb.py 模块与 noun.py 模块具有基本相同的代码。在 context.py 模块中,我有以下代码......
n = noun(id)
base = n.get_output()
#I print out base to make sure everything is good and it is
v = verb(id)
verb = v.get_output()
然后将“n”和“v”传递给 word.py 模块。word.py 模块中包含以下代码。
if v.get_stem_used == "Some Value":
#do whatever
elif n.get_stem_used == "Another value": #This line produces the "attribute error"
#do something
当我尝试访问 n.get_stem_used 时,我收到“AttributeError:名词实例没有属性'get_stem_used'”错误。我做了一些研究,我遇到了这个网址http://effbot.org/zone/import-confusion.htm这让我相信我没有正确导入名词模块,因为我没有导入使用以下代码的名词模块...它不允许我使用点符号来引用具有名词类的元素。
from lib import, verb, word, noun
在上述语句的末尾添加“名词”对我来说很奇怪,但它似乎正确导入了所有其他模块。我已经看到混合制表符和空格可能会导致此错误,但我已经使用我的编辑器检查了它是否已正确标记。我已经为此工作了一段时间,因此非常感谢任何帮助。谢谢。
以下是--init--.py 中的内容
#!/usr/local/bin/python2.5
# -*- coding: utf-8 -*-