我有2个文件,其中1个文件包含类,另1个文件包含“接口”
在第一个文件中,我有:
from second_file import *
class Catalog:
def ListOfBooks(self):
more_20 = input()
# If press 1 starts showing from 20 until 40
if more_20 == '1':
for item in C[20:41:1]:
print("ID:",item['ID'],"Title:",item['title']," Author: ", item['author'])
elif more_20 == '2':
return librarian_option()
test = Catalog()
test.ListOfBooks()
我想要实现的是当用户按下2时,我想回到其他文件中的功能。
第二个文件:
def librarian_option():
.......
我不想使用全局变量,并且我已经阅读到librarian_option()在第二个文件的范围内,这就是为什么我不能直接调用它的原因。我找不到解决方案。
我收到以下错误:
NameError: name 'librarian_option' is not defined
答案 0 :(得分:0)
您尝试过吗?最好是显式而不是使用*通配符
from second_file import librarian_option
确保second_file在同一目录中。
答案 1 :(得分:0)
注意:这不是答案,而是一个示例,可以帮助您更详细地改善问题。
您需要将问题减少到产生问题所需的最少代码量(和操作)。您还需要提供运行脚本的方式确切,以及使用的版本(Python和操作系统)。
例如,我创建了以下两个脚本(名称完全与显示的一样):
first_file.py
:
from second_file import *
class Catalog:
def ListOfBooks(self):
return librarian_option()
test = Catalog()
a = test.ListOfBooks()
print(a)
second_file.py
:
def librarian_option():
return 1
这两个文件位于我的计算机(MacOS)上的同一随机目录中。我按如下方式运行:
python3.7 first_file.py
我的输出是
1
因此,我无法重现您的问题。
查看您是否仍然可以使用这种简化的脚本(即没有额外的函数或类,没有__init__.py
文件等)来产生问题。您可能希望在系统其他位置的临时目录中执行此操作。
如果您的问题消失了,请慢慢建立并重新出现。到那时,也许您已经发现了实际的问题。如果您随后不知道为什么(最后一次)更改导致了问题,请随时使用所有新信息来更新您的问题。