簡體   English   中英

我可以在其他文件中使用 main.py 中的變量嗎?

[英]Can I use variables from main.py in other files?

我正在制作一個基於文本的冒險游戲,我計划很長一段時間。 自然地,我決定將章節拆分為不同的文件,以便根據玩家所做的選擇在if塊中運行,而不是將所有代碼都放在main.py 然而,有一個小問題:我用來自定義故事的所有用戶信息(姓名、性別、服裝等)都存儲在main.py 所以,如果我有另一個文件(例如option3.py )並且我正在寫類似的東西

print(f"{user_name} walked down the street.")

我沒有將user_name存儲在option3.py 我不想每次都將特定變量導入 20 多個文件中的每一個,但我聽說共享命名空間是一個壞主意,所以我想知道是否有更好的方法來解決這個問題。

額外:我還想包括某種物品清單功能,但我不知道如何去做,這個多文件問題以及清單經常變化的事實

最好的辦法是使用類並導入它們。 如果您創建了一個名為 User 的類,並將所有必需的屬性放入該類中,您就可以導入它。

例如,創建一個 user.py 文件:

class User():
  def __init__(self, name, gender, clothing):
    self.name = name
    self.gender = gender
    self.clothing = clothing

然后,無論您的主要游戲循環在哪里,您都可以from user import User

這樣,您可以使用user1 = User('SomeName', 'F', 'Skirt')創建一個新的用戶對象,並且訪問是這樣的屬性: print(user1.name)

如果你不想污染命名空間,你可以做這樣的事情。

game_variables.py

cat = 12
dog = 24

main.py

import game_variables as gv

print(gv.cat)
print(gv.dog)

但是,我認為您忽略了游戲狀態必須在所有模塊之間共享這一點,在這種情況下您需要創建全局變量。 但是,這可能會導致各種不一致。

相反,最好為設計中的每個模塊創建一個類,並在多個文件之間使用 getter 和 setter 傳遞對象狀態。

cat.py

class cat:
  def __init__(self):
    self.cuteness = 100
    pass
  def get_state(self):
    return self.cuteness
  def set_state(self, val):
    self.cuteness = val

update.py

def update(state):
   # some calculation
   return state + 1

main.py

import update
import cat

my_cat = cat.cat()
updated_cat_cuteness = update.update(my_cat.get_state())
my_cat.set_state(updated_cat_cuteness)

暫無
暫無

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

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