【发布时间】:2019-09-19 00:57:18
【问题描述】:
抱歉,我已经搜索过,但没有找到答案 - 我知道有很多相关的话题和问题,但看不到答案。请重定向我或提出解决方案! 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” 并想从与当前房间中所采取的方向相关的属性中检查/读取“锁定”属性。 currentRoom 是一个与其链接的 LIST 元素相关的整数。
请不要批评我缺乏构造函数。我试图使代码尽可能简单,稍后会介绍这些代码。
我的输入如下:
print('Your action:')
move = input('>>>').lower().split()
我使用下面这行代码来检查当前房间中是否存在所取的方向:
if getattr(rooms[currentRoom], move[1]) != '':
然后想检查当前房间中给定方向的锁定属性。像这样的东西......(不起作用)
if rooms[currentRoom].move[1].lock != '':
我希望这已经足够清楚了!非常感谢。
【问题讨论】:
-
欢迎来到堆栈!您能否添加有关锁定属性检查如何不起作用(实际和预期行为)的信息?
-
如果 lock 属性不是空字符串,我希望代码返回 True,但由于 move[1] 被评估为字符串而不是对象的属性,我会收到错误。跨度>
标签: python list class properties nested