我試圖使用類對象的函數來創建一個新的類對象並遇到問題。下面的代碼我到目前爲止:如何引用沒有定義變量的現有類對象?
class Room(object):
def __init__(self, name):
self.name = name
self.N = None
self.E = None
self.S = None
self.W = None
'''relevant code'''
def north(self,room):
self.N = Room(room)
self.N.S = self
def south(self,room):
self.S = Room(room)
self.S.N = self
所以我想這些打印語句
room1 = Room('room1')
room1.north('room2')
print(room2.S)
print(Room(room2).S)
print(Room('room2').S)
吐出「會議室1」中的至少一個,但前兩千萬不要因爲房間2作爲工作一個變量還沒有定義,最後一個不起作用,因爲它似乎在創建一個新的對象而不是引用現有的對象,所以它只是打印默認的'None'。
確實存在一種方法來引用一個沒有設置變量的現有對象嗎?或者是我唯一的選擇做這樣的事情?
def north(self,room):
roomDict[room] = Room(room)
self.N = roomDict[room]
self.N.S = self
編輯:我知道我可能應該調用新的房間的南面()函數,而不是直接改變s變量,但似乎直觀地像它會導致一個循環,所以我沒有觸摸它呢。
這裏的問題是會有很多其他的房間,所以如果我不能直接引用他們,我會最終稱他們爲 room1.N.E.W.N.S 或者荒謬的事情。 – aryst0krat
@ aryst0krat那麼這個問題的大背景是什麼?根據你想要對房間做什麼,可能有更好的方法來組織它們,但我需要知道你想和他們一起來幫助。 – gil
更大的背景是它是基於文本的冒險遊戲。就我的Room對象而言,我需要能夠引用它們來告訴玩家所在的位置,遊戲對象的位置等等。所以能夠通過名稱來引用它們是重要的,但我寧願不必爲他們全部手動創建變量。 他們連接的原因只是從一個房間移動到另一個房間。所以如果你說要向北移動,它會將你移動到房間的N變量中的房間。 – aryst0krat