在Python中避免循环导入

时间:2014-04-11 07:22:50

标签: python-2.7 python-import circular-dependency

请帮助我,我有点沮丧,我仍然无法弄清楚如何提前计划。 reddit上的一个成员告诉我,我可以通过导入一个文件中的每个模块来避免循环导入,在我的例子中是start.py。我可能不正确理解导入因为我收到错误。在menu.py我无法触及我的提示(prompt.py)模块(因为它仅在start.py中导入。我认为它的工作方式是我将所有内容都放在一个文件中导入的模块将能够相互通信。

有人可以解释为什么这是不可能的吗?

这些是文件:

文件/模块:

|App/
  |- __init__.py
  |- start.py
  |- menu.py
  |- prompt.py
  |- locations.py
  |- error.py

start.py:

import sys
import error
import menu
import prompt


print "\nMy little game"
print "=" * 27

menu.main_menu()

menu.py:

def new_game():
    pass

def load_game():
    pass

def high_score():
    pass

def main_menu():
    print """
    1. New game
    2. Load game
    3. High score
    4. Quit
    """

    sel = prompt.number()

    if sel == 1:
        new_game()
    elif sel == 2:
        load_game()
    elif sel == 3:
        high_score()
    elif sel == 4:
        exit(1)
    else:
        error.type(2)

prompt.py:

def number():
    try:
        while True:
            return int(raw_input("Type numbers only >"))
    except ValueError:
        error.type(1)

error.py:

def type(number):
    errors = {
    1: 'Type numbers only',
    2: 'Does not exist',
    }

    print errors.get(number)

0 个答案:

没有答案