如何通过字典写入类成员变量?

时间:2019-04-17 17:31:10

标签: python-3.x class

我正在写一个非常简单的探路者式游戏。

为此,我为主要玩家开设了以下课程:

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)

为什么呢?有没有办法实现第一个版本呢?

0 个答案:

没有答案