![](/img/trans.png)
[英]How can i use a function from an other python file i named it as Features.py I want use the function in a class in 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.