我正在写一个非常简单的探路者式游戏。
为此,我为主要玩家开设了以下课程:
class Player:
def __init__(self, **player):
self.name = ""
self.health = 100
self.attack = 0
self.defense = 0
self.speed = 0
self.inventory = []
self.__dict__.update(player)
@property
def attributes(self):
return {
"health": self.health,
"attack": self.attack,
"defense": self.defense,
"speed": self.speed,
}
我也有一个Item类:
class Item:
def __init__(self, **item):
self.name = ""
self.influenced_attribute = ""
self.amount = 0
self.__dict__.update(item)
我现在想做的是为use
类提供一个Player
成员函数,如下所示:
def use(self, item):
self.attributes[item.influenced_attribute] += item.amount
self.remove(item)
不幸的是,这不会更改玩家属性。
另一方面,这样做:
def use(self, item):
infl_attr = item.influenced_attribute
if infl_attr == "health":
self.health += item.amount
elif infl_attr == "attack":
self.attack += item.amount
elif infl_attr == "defense":
self.defense += item.amount
elif infl_attr == "speed":
self.speed += item.amount
self.remove(item)
为什么呢?有没有办法实现第一个版本呢?