在 Python 中创建对象属性后,如何更改它们?

How do I change class object attributes once they've been created in Python?

我正在尝试创建稍后可以根据用户输入进行修改的对象属性

它的要点是我正在尝试制作一个基于文本的角色扮演游戏与统计数据。我将 Player 设为 class 对象,其中包含 'HP' 'AC' 'Strength' 等统计信息。

游戏的核心部分是统计数据能够相互影响。例如,玩家的 'AC' 是通过将 10 加上他们的 'Dex' 修饰符

来计算的

我想让玩家选择他们的 'Dex' 所以我需要能够相应地修改对象属性

但是,Python 似乎无法识别我输入的数学。

class Test:
  def __init__(self):
    self.x = 1
    self.y = 2
    self.z = self.x + self.y

test = Test()
test.y = 7
print(str(test.z))

印刷品给我“3”

我怎样才能让它给我“8”?

如果您希望在访问时计算属性值,这是 @property 装饰器的任务,请考虑以下示例:

class Player:
    def __init__(self):
        self.x = 1
        self.y = 2
    @property
    def z(self):
        return self.x + self.y

player1 = Player()
player1.y = 7
print(player1.z)

输出:

8

如果您想了解更多关于 python 中装饰器的信息,我建议您阅读 realpython Primer on python decorators