如何使用字符串列表作为变量名/对象属 性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用字符串列表作为变量名/对象属 性?相关的知识,希望对你有一定的参考价值。

我想做的是在创建对象时将字符串列表用作对象的属性。我看到另一个主题讨论过如何通过创建字典来将字符串列表用作变量,但这似乎将字符串保留为字符串,我认为这对我不起作用。这就是我想要的工作。这是DnD练习:

abilities = ['strength', 'dexterity', 'constitution', 'intelligence', 'wisdom', 'charisma']


class Character:
    def __init__(self):
        for ability in abilities:
            self.ability = roll_ability()       #this is a call to an outside function

谢谢!

答案

使用setattr

def __init__(self):
    for ability in abilities:
        setattr(self, ability, roll_ability())
另一答案

由于这是针对D&D游戏的,因此您可能还需要动态访问能力得分;例如,saving_throw方法可以使用您用来滚动saving throw的功能的名称。在这种情况下,通常最好使用字典而不是单独的属性:

class Character:
    def __init__(self):
        self.abilities =  ability: roll_ability() for ability in abilities 

    def get_ability_score(self, ability):
        return self.abilities[ability]

    def saving_throw(self, ability, bonus=0):
        return roll_dice(20) + self.abilities[ability] + bonus

以上是关于如何使用字符串列表作为变量名/对象属 性?的主要内容,如果未能解决你的问题,请参考以下文章

第一类对象 函数名 变量名

第一类对象 函数名 变量名

如何在 C++ 中使用字符串作为变量名? [复制]

11 第一类对象 闭包 迭代器

java中如何输出字符变量的Unicode编码值

面向对象之封装