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。谢谢您的回复!谢谢你的回复!谢谢你的回复!