构建一个使用字典存储修改类属性的值的函数

时间:2016-08-18 23:23:23

标签: python oop dictionary

在我基于文本的RPG中,我有一个具有各种属性的玩家类,其中一个是self.abilities,这是一个存储静态能力的列表。

class Player(object):
    def __init__(self):
        self.strength = 5
        ...
        self.abilities = []
        ...

self.strength是另一个玩家价值的示例。

在这个程序中,我有另一个名为Ability的类,它存储影响self.strength等基本玩家值的信息。它有一个类方法,可以生成添加到播放器类的功能。

class Ability(object):
    # `ability_names` lists ALL of the base player values that can be 
    # modified by an ability. 
    ability_names = ['strength', 'intelligence', 'dexterity', 'defense',
    'endurance', 'block', 'faith', 'sorcery', 'speech', 'luck', 'health',
    'stamina', 'mana', 'equip load']

    def __init__(self, name, buff, descripton):
        self.name = name
        self.buff = buff
        self.descripton = descripton

    @classmethod
    def generate(cls, player):
        name = choice(cls.ability_names) + ' ' + 'buff'
        buff_amt =  randint(1, player.level * 3)
        buff = {name: buff_amt}
        description = 'This ability applies a buff of {} to your {} attribute'.format(buff_amt, name)
        return cls(name, buff, description)

为了举例,我们假设我们使用Ability方法将self.abilities实例附加到玩家的Ability.generate()列表值,并声明self.buff值等于{{ 1}}。如果是这种情况,我该如何编写一个从{'strength': 3}实例的Ability字典中提取信息并将这些值应用于self.buff类'属性的函数,或者更确切地说添加Player到玩家的3

0 个答案:

没有答案