我正在尝试使用面向对象来创建游戏。我希望能够访问房间和运行活动,但只能在每个房间运行某些活动。我将所有活动分配给一个Object,我想使用播放器输入的变量来访问Objects的变量,然后打印他们在房间里所做的事情。
if activitiesList[i] == choice2:
convert = (activitiesList2[i + 1])
convert = str(convert)
print ('You', a.convert, 'in', a.name)
转换从列表中获取活动的名称然后我希望它告诉Object它正在寻找哪个变量。 我尝试过的所有内容都会导致程序在Object中查找属性“convert”。 如何让它搜索播放器选择的属性?
答案 0 :(得分:1)
目前还不完全清楚你在问什么,但我怀疑你想要getattr
:
action = getattr(a, convert)
答案 1 :(得分:1)
如果要动态访问属性,可以使用getattr()
功能:
try:
value = getattr(a, attribute_name)
except AttributeError:
# attribute not found
pass
或者,如果属性不存在,您还可以提供要返回的默认值,而不是要抛出的异常:
value = getattr(a, attribute_name, default_value)
答案 2 :(得分:0)
您是否尝试使用dict而不是列表?
stuff_in_room = {'hammer': ...}
if action in stuff_in_room:
# do something
else:
# can't do that