有没有办法在实例化之前引用类对象?

Chr*_*nes 2 python python-2.7

我正在尝试使用Python制作一个简单的文本游戏.我有一Room节课:

class Room():
    def __init__(self, monster, exits, loot):
        self.room_guard = monster
        self.exits = exits
        self.guard_is_alive = True
        self.loot = loot
Run Code Online (Sandbox Code Playgroud)

当我创建房间时,我收到一个错误,因为我在创建之前调用它们是这样的:

room_2 = Room(spider, {"West": room_3, "East": room_4, "South": room_1}, 2)
room_1 = Room(trogdor, {"North": room_2}, 2)
Run Code Online (Sandbox Code Playgroud)

2号房间没有,"South": room_1因为它还没有实例化.有没有解决的办法?

Dan*_* D. 6

两个选项:间接,创建后分配.

而不是直接引用房间,而是使用dict将房间名称映射到房间:

rooms = {}
rooms['room_2'] = Room(spider, {"West": 'room_3', "East": 'room_4', "South": 'room_1'}, 2)
rooms['room_1'] = Room(trogdor, {"North": 'room_2'}, 2)
Run Code Online (Sandbox Code Playgroud)

或者在创建Room对象后分配出口:

room_2 = Room(spider, {}, 2)
room_1 = Room(trogdor, {}, 2)

room_2.exits = {"West": room_3, "East": room_4, "South": room_1}
room_1.exits = {"North": room_2}
Run Code Online (Sandbox Code Playgroud)