如何添加这两个变量并正确输出?

时间:2019-05-12 12:48:56

标签: python-3.x

我对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。有人可以告诉我如何解决此问题吗?

1 个答案:

答案 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