Python 如何在变量名中使用变量

Python 如何在变量名中使用变量,python,Python,我有一个具有属性的类角色: class Character(): def __init__(self): self.level_10_skill = 'aaa' self.level_20_skill = 'bbb' self.level_30_skill = 'ccc' player_level = '20' print(Character.level_int(player_level)_skill) # Not Working

我有一个具有属性的类角色:

class Character():
    def __init__(self):
        self.level_10_skill = 'aaa'
        self.level_20_skill = 'bbb'
        self.level_30_skill = 'ccc'

player_level = '20'


print(Character.level_int(player_level)_skill) # Not Working
如何在角色属性中调用变量play_level?我写的代码不起作用。谢谢

应该为您做这件事。它允许您构建一个字符串,并从具有该名称的对象中获取属性

attribute_name = level_int(player_level) + "_skill"
print(getattr(Character, attribute_name))
如果
attribute\u name
不是类中某个属性的名称,那么它将引发
AttributeError
,就像调用
Character.not\u attribute
一样,因此在行为上是相同的

您还可以通过提供
getattr
第三个参数来覆盖rasining异常的默认行为

getattr(Character, attribute_name, "No skill this level")

相反,请尝试使用字典:

class Character():
    def __init__(self):
        self.skillbylevel = { 
            10: 'aaa',
            20: 'bbb',
            30: 'ccc' 
        }

player_level = 20

hero = Character()
print(hero.skillbylevel[player_level])

虽然您可以通过这种方式设置类,但我认为一种更简单、更可读的方式应该是这样的:

#! /usr/bin/env python

class Character():
  def __init__(self, level):
    self.skill_level = level
    self.skills = {
      10: 'aaa',
      20: 'bbb',
      30: 'ccc'
    }

  def set_skill_level(self, skill_level):
    self.skill_level = skill_level

  def get_skill_level(self):
    return "You are currently at skill level {0}".format(self.skill_level)

  def get_skill(self):
    return "Your skill is {0}".format(self.skills[self.skill_level])

if __name__ == "__main__":
  my_character = Character(20)
  print(my_character.get_skill_level())
  print(my_character.get_skill())

在这里,您存储了相关的实例变量、技能级别以及与该级别相关的技能,并提供了与该数据交互的类方法。我认为使用字典来定义每个级别的技能比为每个技能定义不同的实例变量更简洁,因为它提供了将技能列表作为参数传递给类的灵活性,或者从外部源(如数据库、文件、,等等。

我认为您需要创建一个级别属性作为dict。谢谢您的回复!谢谢你的回复!谢谢你的回复!