Python:变量访问面向对象?

时间:2012-11-26 10:05:23

标签: python oop

我正在尝试使用面向对象来创建游戏。我希望能够访问房间和运行活动,但只能在每个房间运行某些活动。我将所有活动分配给一个Object,我想使用播放器输入的变量来访问Objects的变量,然后打印他们在房间里所做的事情。

    if activitiesList[i] == choice2:
        convert = (activitiesList2[i + 1])
        convert = str(convert)
        print ('You', a.convert, 'in', a.name)

转换从列表中获取活动的名称然后我希望它告诉Object它正在寻找哪个变量。 我尝试过的所有内容都会导致程序在Object中查找属性“convert”。 如何让它搜索播放器选择的属性?

3 个答案:

答案 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