Python:访问面向对象的变量?

Python:访问面向对象的变量?,python,oop,Python,Oop,我正在尝试使用面向对象来创建一个游戏。我希望能够访问房间并运行活动,但只能在每个房间中运行某些活动。我把所有的活动都分配给一个对象,我想使用玩家输入的变量来访问对象的变量,然后打印他们在房间里做了什么 if activitiesList[i] == choice2: convert = (activitiesList2[i + 1]) convert = str(convert) print ('You', a.convert, 'in',

我正在尝试使用面向对象来创建一个游戏。我希望能够访问房间并运行活动,但只能在每个房间中运行某些活动。我把所有的活动都分配给一个对象,我想使用玩家输入的变量来访问对象的变量,然后打印他们在房间里做了什么

    if activitiesList[i] == choice2:
        convert = (activitiesList2[i + 1])
        convert = str(convert)
        print ('You', a.convert, 'in', a.name)
Convert从列表中获取活动的名称,然后我希望它告诉对象它正在查找哪个变量。 我所尝试的一切只会导致程序在对象中查找属性“convert”。
我如何让它搜索玩家选择的属性?

不完全清楚你在问什么,但我怀疑你想要
getattr

action = getattr(a, convert)

如果要动态访问属性,可以使用以下函数:

try:
    value = getattr(a, attribute_name)
except AttributeError:
    # attribute not found
    pass
或者,如果属性不存在,也可以提供要返回的默认值,而不是要引发的异常:

value = getattr(a, attribute_name, default_value)

你试过用口述代替列表吗

stuff_in_room = {'hammer': ...}
if action in stuff_in_room:
    # do something
else:
    # can't do that

我确实想到了这一点,但那将是一个巨大的如果语句和代码,我想一种方法来做这件事更迅速,那么我一定误解了你的问题。祝游戏好运!