如何修复AttributeError:module' testing2'没有属性' printPackage'?

时间:2017-11-12 13:41:17

标签: python python-3.x

我有第一个模块:

#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。感谢。

1 个答案:

答案 0 :(得分:0)

从我所看到的,你得到错误的原因是因为两个模块都依赖于另一个。

如果你看一下testing1的第1行,你会看到一个import语句。然后运行testing2。此模块的第一行是导入testing1。当Python运行此模块时,它会找到对testing2.printPackage的引用,该引用尚未导入

要解决此问题,请尝试整理两个模块的依赖关系,看看是否可以将两者合并为一个模块。

testing2中的import语句之前,替代选项是将printPackage函数定义为:

printPackage = lambda menuList: None

然后继续您的模块,稍后重新定义printPackage函数。

希望这会有效。