擅长:python、mysql、java
<p>在每个类中,您都声明了一组<em>类</em>属性。像<code>rooms[0].roomname = 'outside'</code>这样的赋值创建了一个<em>实例</em>属性,该属性对<code>room.roomname</code>进行阴影处理。但是,您实际上从未对<code>rooms[0].n</code>进行任何此类赋值,因此对<code>rooms[0].n.dest</code>之类的对象的每个赋值都是将实例属性<code>dest</code>添加到<code>room</code>的每个实例共享的<code>direction</code>的<em>相同的</em>实例中。你知道吗</p>
<p>在你试图“简化”你的代码时,你已经使它变得更复杂了。定义<code>__init__</code>来设置<em>实例</em>属性;类属性不经常使用。你知道吗</p>
<pre><code>class Direction:
def __init__(self, dest, lock=''):
self.dest = dest
self.lock = lock
class Room:
def __init__(self, roomname, desc, item=''):
self.roomname = roomname
self.desc = desc
self.n = direction()
self.s = direction()
self.w = direction()
self.e = direction()
self.item = item
rooms = []
r = Room('outside', '')
r.n.dest = 4
rooms.append(r)
r = Room('hall', 'The hallway has doors to the east and south')
r.n.dest = 2
rooms.append(r)
</code></pre>