如何在Python中修改类对象属性一旦它们被创建了?

3
我正在尝试创建可根据用户输入稍后修改的对象属性。
关键是,我正在尝试制作一个基于文本的RPG游戏,并具有像“HP”、“AC”、“力量”等统计数据。
游戏的核心部分是统计数据能够相互交互。例如,玩家的“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'?

1个回答

5

如果你想在访问时计算属性值,则可以使用 @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 装饰器的更多信息,我建议阅读《Python 装饰器入门》


谢谢您的快速回复。现在是凌晨2:45,这个问题让我熬夜了,哈哈,所以我会在明天早上试一下...嗯,可能是下午吧。再次感谢! - Cam
成功了!非常感谢。现在我要阅读入门指南,找出它为什么能够成功。哈哈 - Cam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接