我有四个变量需要在特定模块中更改并在特定模块中读取。为了澄清,这些模块是“health
”,“max_health
”,“attack
”和“gold
”。
当敌人在每个应用程序的三个级别中被击败时,黄金意味着增加;当在军械库模块中购买一件装甲/武器时,黄金会减少,当受到敌人的攻击时,健康意味着减少在医院模块中恢复,max_health取决于军械库模块中装备的装甲,同样适用于攻击和装备的武器。
问题是设定值总是来自我已经存储了每个变量以及应用程序功能的模块。
因此,我想知道在应用程序首次启动时是否有最初从每个变量中获取值的方法,然后随着应用程序的继续,可以如上所述更改和读取模块中的值。
任何反馈都会受到广泛赞赏。
编辑:变量全球化并在StoreData中建立如下:
global max_health
global health
global attack
global gold
max_health = 100
health = 100
attack = 5
gold = 0
然后将这些变量导入每个模块,如下所示:
from PKG.StoreData import hub_from_level1_travel, max_health, attack, gold, health
from PKG.StoreData import health, max_health, attack, gold, hub_from_level2_travel
from PKG.StoreData import health, max_health, attack, gold, hub_from_level3_travel
from PKG.StoreData import hospital_heal, hub_from_hospital_travel, max_health, health, gold, attack
from PKG.StoreData import hospital_travel, armoury_travel, level1_start, level2_start, level3_start, exit, health, max_health, attack, gold
from PKG.StoreData import hub_from_armoury_travel, max_health, health, gold, attack
变量的值按照最初描述的方式更改,但更改不会替换StoreData中显示的设置值。相反,当任何非StoreData的模块正在使用时,值将从StoreData获取,并取代初始设置的值。我无法解决这个问题的任何潜在修复,所以反馈将在此刻永远感激。
答案 0 :(得分:0)
首先,您的全球声明毫无意义。如果这些变量是在模块级别定义的,那么它们已经是全局的。
其次,要解决您的问题,您应该导入模块,而不是变量。然后,您可以通过该模块参考读取和设置它们:
from PKG import StoreData
StoreData.hub_from_level1_travel = 'foo'
或者,您可以在StoreData中引入另一个命名空间来设置变量 - 例如一个类。