我正在使用2010年头版第一本Python,第2章。我已创建了一个名为nester
的模块,其中包含函数print_lol
,然后制作了另一个程序,应该导入nester,创建一个小列表,然后调用nester中包含的函数print_lol
。这不起作用。
import nester
cast = ["Palin", "Cleese", "Idle", "Jones", "Gilliam", "and Chapman."]
nester.print_lol(cast)
这是程序,这是输出:
> Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
nester.print_lol(cast)
AttributeError: module 'nester' has no attribute 'print_lol'
这有什么不对?为什么会这样?代码与书中完全相同,路径相同,环境路径也可以。怎么了?
这是&#39; nester&#39;代码,它工作正常。
def print_lol(the_list):
for each_item in the_list:
if isinstance(each_item, list):
print_lol(each_item)
else:
print(each_item)
此外,nester还在C:\ nester中。它包含setup.py,nester.py以及安装文件夹和文件:MANIFEST,Lib,dist,build。
答案 0 :(得分:1)
在你的python控制台上试试这个
dir("nester")
它应该显示所有可用的功能。您可能需要确保print_lol
在列表中。最有可能的是,它还有一些其他的贡品。所以你调用它的方式应该是nester.some_tribute.print_lol()
答案 1 :(得分:0)
由于import nester
没有引发错误,这意味着您的脚本可以导入nester
。尝试(显式函数导入)
from nester import print_lol
如果失败,请确保print_lol
中存在nester
,因为没有拼写错误。
答案 2 :(得分:-1)
我想我找到了答案,这很简单,但我没有注意到,直到在网站上与两位朋友进行更深入的研究。
将'nester'类放在其中的模块称为'nester'。所以当我尝试导入'nester'时,我导入了模块,而不是类。我将问题1中的代码更改为:
from nester import nester
cast = ["Palin", "Cleese", "Idle", "Jones", "Gilliam", "and Chapman."]
nester.print_lol(cast)
所以我从'nester'模块导入'nester'类。 专业提示:永远不要为Module和Class使用相同的名称。