0

我正在做一个文本冒险,将关卡存储为一个名为“地点”的大型字典。与其将它放在主文件中,我想我会创建一个名为“levels.py”的单独文件来包含它,从而使我的代码更清晰,并且无需通过 450 多行其他代码来添加它.

所以,主要的游戏文件:

from levels import places

class Thing:
    #Some stuff

水平.py:

from game import *
places = {
    "bleh" : Thing("bleh"),
}

然而,似乎游戏中没有定义“地点”。

我认为正在发生的事情是有一个导入“循环”。但是,如果levels.py 需要从game.py 导入类,我怎么能防止这样的事情呢?

4

2 回答 2

6

总是可以通过重构来消除循环依赖。移动Thingthing.py,然后game.pylevels.py使用中from thing import Thing。冲洗并重复。

于 2012-06-27T15:58:52.583 回答
0

您可以更改levels为具有一个初始化程序或工厂方法,该方法采用由game.

例如:

# levels.py
# no import needed here; we'll just take an instance when required
def get_places(thing):
    return {"bleh": thing("bleh")}

# game.py

import levels

class Thing:
    def __init__(self):
        self.places = levels.get_places(self)

编辑:

更好的方法是将两个类需要的数据移动到另一个类中,这样它们都可以轻松访问或导入。例如,就像一个游戏状态对象,它在具有功能的类之间传递。

于 2012-06-27T15:57:54.173 回答