簡體   English   中英

導入一個模塊,該模塊導入主模塊

[英]importing a module that imports the main module

我正在做一個文字冒險,將關卡存儲為一個巨大的字典,稱為“地方”。 而不是將其保存在主文件中,我認為我將制作一個單獨的文件“ levels.py”來包含該文件,從而使我的代碼更整潔,並且無需遍歷450多個其他代碼行來添加。

因此,主要游戲文件為:

from levels import places

class Thing:
    #Some stuff

levels.py:

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

但是,似乎“位置”並未在游戲中定義。

我認為正在發生的事情是有一個導入“循環”。 但是,如果levels.py需要從game.py導入類,我該如何防止此類情況發生?

始終可以進行重構以消除循環依賴。 Thing from thing import Thing移至thing.py ,然后在game.pylevels.py使用。 沖洗並重復。

您可以更改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)

編輯:

更好的辦法是將兩個類都需要的數據移到它們都可以輕松訪問或導入的另一個類中。 例如,類似於游戲狀態對象,該類在具有功能的類之間傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM