gpt4 book ai didi

python - 如何通过可变数量增加对象属性

转载 作者:太空狗 更新时间:2023-10-30 02:15:08 26 4
gpt4 key购买 nike

我有一个 python 类,用于一个具有属性名称、健康、力量、隐身、敏捷、武器和金钱的人物。我正在制作的游戏中有一家商店可以增加特定项目的任何整数属性的值。每个整数属性都可以通过具有不同成本和增益强度的两个不同项目之一来增加。我遇到的问题实际上是按数量递增属性并保存对象。

这是对象的代码:

class Figure:
def __init__(self, stats):
#create figure object
self.name = stats[0]
self.health = int(stats[1])
self.strength = int(stats[2])
self.stealth = int(stats[3])
self.agility = int(stats[4])
self.weapons = int(stats[5])
self.money = int(stats[6])

def show_person(self):
#show object attributes
print("\n\n{}\n\nHealth: {}\nStrength: {}\nStealth: {}\nCunning: {}\nWeapons: {}\nMoney: £{}".format(self.name.title(),self.health,self.strength,self.stealth,self.cunning,self.weapons, self.money))

def set_attr(self,attr,buff):
#increase character attribute by a variable amount
eval("self.{} = self.{} + {}".format(attr,attr,buff))

我可能会使用 friend.set_attr("stealth",10) 将 friend 的隐身值增加 10,其中 friend 是一个包含这些 Figure 对象之一的变量,但抛出此错误:

File Computer Science\python\oop game.py", line 21, in set_attr
exec(eval("self.{} = self.{} + {}".format(attr,attr,buff)))
File "<string>", line 1
self.agility = self.agility + 4
^
SyntaxError: invalid syntax

我不知道为什么。

最佳答案

赋值是一个语句,不能在只接受表达式的 eval 中使用。您应该改用 exec:

exec("self.{} = self.{} + {}".format(attr,attr,buff))

但是代替 exec,最好使用 setattr 函数:

setattr(self, attr, getattr(self, attr) + buff)

关于python - 如何通过可变数量增加对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52699918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com