我对python来说还比较陌生,并且正在研究使用python编写的基于文本的rpg游戏,以改进它。在尝试将玩家的攻击伤害设置为等于其力量+武器攻击时,我一直遇到问题。这两个变量不相加。
class player:
strength = 10
weaponattack=0
attack = strength + weaponattack
#other code outside of class
player.weaponattack = 10
print(player.attack)
我希望print(player.attack)输出20,但输出10。有人可以告诉我如何解决此问题吗?
答案 0 :(得分:0)
这里有几个问题,主要的问题是您使用类属性而不是实例属性(有关更多信息,请参见What is the difference between class and instance attributes?)。
第二,attack = strength + weaponattack
仅在定义时间进行评估。您稍后修改weaponattack
的事实并不强制attack
被重新评估(和重新计算)。
一个好的解决方案是使用属性:
class Player:
def __init__(self):
self.strength = 10
self.weaponattack = 0
@property
def attack(self):
return self.strength + self.weaponattack
player = Player()
print(player.attack)
player.weaponattack = 10
print(player.attack)
输出
10
20