[英]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.py
和levels.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.