Python 如何使用变量作为对象名从对象获取属性
我想做的是在列表中随机选择一个项目,然后使用它来遍历该对象的属性。很明显,我可以硬编码当前的目标变量(Python 如何使用变量作为对象名从对象获取属性,python,python-3.x,Python,Python 3.x,我想做的是在列表中随机选择一个项目,然后使用它来遍历该对象的属性。很明显,我可以硬编码当前的目标变量(bioter.Dog.attr1),但我希望能生成这个变量 我的代码是这样的: class Creature(object): def __init__(self, name, attr1, attr2): self.name = name self.attr1 = attr1 self.attr2 = attr2 Squirrel
bioter.Dog.attr1
),但我希望能生成这个变量
我的代码是这样的:
class Creature(object):
def __init__(self, name, attr1, attr2):
self.name = name
self.attr1 = attr1
self.attr2 = attr2
Squirrel = Creature("Squirrel", 20, 1)
Dog = Creature("Dog", 50, 10)
Goblin = Creature("Goblin", 100, 100)
creature_list = ['Squirrel', 'Dog', 'Goblin']
def get_creature():
return random.choice(creature_list)
这些是从我的主课中调用的:
current_target = Creature.get_creature()
print("The current target is %s, and has %s, and %s"
% (current_target, Creature.current_target.attr1, Creature.current_target.attr2))
使用实例而不是字符串
一个简单的改变是将你的生物
实例放在列表中并从中选择
import random
class Creature(object):
def __init__(self, name, attr1, attr2):
self.name = name
self.attr1 = attr1
self.attr2 = attr2
Squirrel = Creature("Squirrel", 20, 1)
Dog = Creature("Dog", 50, 10)
Goblin = Creature("Goblin", 100, 100)
creature_list = [Squirrel, Dog, Goblin]
def get_creature():
return random.choice(creature_list)
current_target = get_creature()
print("The current target is %s, and has %s, and %s"
% (current_target.name, current_target.attr1, current_target.attr2))
谢谢你,格雷姆。我之前在列表中有
生物
,但仍然试图从类调用,而不是直接从变量调用。那句解释变化的话对我真的很有帮助。
class Creature(object):
def __init__(self, name, attr1, attr2):
self.name = name
self.attr1 = attr1
self.attr2 = attr2
Squirrel = Creature("Squirrel", 20, 1)
Dog = Creature("Dog", 50, 10)
Goblin = Creature("Goblin", 100, 100)
creature_list = [Squirrel, Dog, Goblin]
def get_creature():
return random.choice(creature_list)
current_target = get_creature()
print("The current target is %s, and has %s, and %s"
% (current_target.name, current_target.attr1, current_target.attr2))