我有第一个模块:
#testing1
import testing2
choice = input('Enter your choice:')
def calculateMenuPrice(choice):
testing2.printPackage(menuList)
calculateMenuPrice(choice)
和第二个模块:
#testing2
import testing1
menuList = testing1.calculateMenuPrice(choice)
def printPackage(menuList):
for x in menuList:
if menuList == '1':
return('''
----------
Menu List
----------
1. Jelly Fish Yee Sang with Pear
2. Dried Seafood with Fish Soup
3. Steamed Sea Water Grouper
''')
elif menuList == '2':
return('''
----------
Menu List
----------
1. Jelly Fish Yee Sang with Pear
2. Shark Fin Soup with Crab Meat
3. Steamed River Patin Fish
''')
elif menuList == '3':
return('''
----------
Menu List
----------
1. Salmon Fish Yee Sang with Pear
2. Steamed Classic Abalone Soup
3. Steamed Bamboo Fish
''')
elif menuList == '4':
return('''
----------
Menu List
----------
1. Abalone Yee Sang with Pear
2. Mini Classic Steam Soup
3. Steamed Local Pomfret Fish
''')
testing2模块要求我使用for循环来遍历菜单,没有硬编码的代码,但我得到了:
AttributeError: module 'testing2' has no attribute 'printPackage'
请帮助和建议。我刚刚开始学习python。感谢。
答案 0 :(得分:0)
从我所看到的,你得到错误的原因是因为两个模块都依赖于另一个。
如果你看一下testing1
的第1行,你会看到一个import语句。然后运行testing2
。此模块的第一行是导入testing1
。当Python运行此模块时,它会找到对testing2.printPackage
的引用,该引用尚未导入 。
要解决此问题,请尝试整理两个模块的依赖关系,看看是否可以将两者合并为一个模块。
在testing2
中的import语句之前,替代选项是将printPackage
函数定义为:
printPackage = lambda menuList: None
然后继续您的模块,稍后重新定义printPackage
函数。
希望这会有效。