【发布时间】:2016-03-09 01:43:09
【问题描述】:
在我的程序中,我设置了两个名为 game.py 和 player.py 的类。 这两个文件都调用 Player 类中的函数(所有内容都正确导入),并且在 game.py 文件中打印了有关变量的所有信息。但是,当从 Game 类更新变量时,新变量打印得很好,但是当它从 Player 类更新时,它不会改变。相反,打印的变量是 Player 类中 init 中的变量。
例如
(in the Game class)
print player.health
player.health += 1
print player.health
将打印
100
101
如果我要这样做
self.health += 100 #(from within the Player class)
然后
print player.health #(from the Game class)
输出将是
100
注意:变量正在 Player 类中更新,但没有从 Game 类正确打印。但我知道他们正在 Player 中更新,因为当生命值达到 0 时用户仍然会死亡,即使它一直显示为 100
我相信原因是变量都被重置为 init Player 类中的变量,但这并不能完全解释为什么 Game 类可以永久操纵这些变量。和自己有关系吗?
非常感谢任何帮助。谢谢!
编辑:添加游戏获取玩家变量的代码
purple("\n\nHealth: %d" % player.health)
purple 是一个将文本变为紫色的函数,player 在类的开头定义为
player = Player()
它不再在任何其他文件中定义
【问题讨论】:
-
Game代码在哪里获取其player实例?它是否正在修改与您的其他代码不同的实例? -
游戏代码正在导入我拥有的 game.py 文件,其中 Game 是唯一的类
-
我刚刚看到在 Game 类和 Main 类中我都创建了 player = Player() ,所以也许它正在创建所有变量的两个实例?
-
是的,那肯定可以。您可能只想在某处创建一个 Player 实例并在其他对象之间传递它(例如,通过传递
Player实例来初始化Game,也许)。 -
我从主文件中删除了 player = Player,所以现在只有一个 Player 实例,它在 Game 类中,但问题仍然存在
标签: python class variables reset