【问题标题】:How do I change class object attributes once they've been created in Python?在 Python 中创建类对象属性后如何更改它们?
【发布时间】:2021-01-17 23:39:32
【问题描述】:

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

它的要点是我正在尝试制作一个带有统计数据的基于文本的 RPG。我将 Player 设为一个类对象,其中包含“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'?

【问题讨论】:

    标签: python game-development


    【解决方案1】:

    如果您希望在访问时计算属性值,这是 @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

    【讨论】:

    • 感谢您的快速回复。我现在大约是凌晨 2 点 45 分,这个问题让我迟到了哈哈,所以我会在早上试试这个……我猜是下午。再次感谢!
    • 成功了!太感谢了。现在我要阅读入门书并找出它为什么有效。大声笑
    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2013-09-09
    • 2023-03-24
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多