对不起,我已经搜索过并且没有设法找到答案。我知道有很多与此相关的话题和问题,但看不到答案。请重定向我,或者提出解决方案! TIA
我有一个对象数组。 该数组中对象的一个(实际上是4个)属性是另一个类。
从用户处获取的输入引用数组中的一个属性,该属性包含另一个类的实例。我只想读取这些数据。
class direction():
dest = -1
lock = ''
class room():
roomname = ''
desc = ''
n = direction()
s = direction()
w = direction()
e = direction()
item = ''
rooms = []
rooms.append( room() )
rooms.append( room() )
rooms.append( room() )
rooms.append( room() )
rooms.append( room() )
rooms[0].roomname = 'outside'
rooms[0].desc = ''
rooms[0].n.dest = 'bathroom'
rooms[0].item = ''
rooms[1].roomname = 'hall'
rooms[1].desc = 'The hallway has doors to the east and south'
rooms[1].s.dest = 2
rooms[1].e.dest = 3
rooms[1].item = ''
,依此类推。 现在,我从用户那里获取输入,例如:“ go n” 并希望从与当前房间中所采取的方向相关的属性中检查/读取“ lock”属性。 currentRoom是与其链接到的LIST元素有关的整数。
请不要批评我缺乏构造函数。我试图使代码最初尽可能地简单,并将在以后介绍。
我输入如下:
print('Your action:')
move = input('>>>').lower().split()
我使用以下代码行来检查所采取的方向是否在当前房间中存在,如下所示:
if getattr(rooms[currentRoom], move[1]) != '':
,然后要检查当前房间中给定方向的锁属性。像这样的东西(不起作用)
if rooms[currentRoom].move[1].lock != '':
我希望这足够清楚!非常感谢。
答案 0 :(得分:0)
if rooms[currentRoom].move[1].lock != '':
因为move[1]
是一个字符串,所以此行代码无效。如果要访问类中的变量,则必须在代码行中调用它
if rooms[currentRoom].n.lock != '':
一种解决方案是获取存储在对象中的值,如下所示
x = getattr(rooms[currentRoom], move[1]) #getattr() returns direction() object
if x.lock != '': #check lock value in direction() object