2017-06-18 41 views
1

Exercise 43 Learn Python Hard Way使用值爲構造函數的字典。字典是在一個類中定義的。 我不明白當這個類返回一個字典值時會發生什麼。每次返回給定類的新對象?LPTHW練習43 - 通過從字典中返回構造函數創建對象

class Map(object): 

    scenes = { 
     'central_corridor': CentralCorridor(), 
     'laser_weapon_armory': LaserWeaponArmory(), 
     'the_bridge': TheBridge(), 
     'escape_pod': EscapePod(), 
     'death': Death(), 
     'finished': Finished(), 
    } 

... 

下面是從字典中返回一個值場景

def next_scene(self, scene_name): 
     val = Map.scenes.get(scene_name) 
     return val 

方法是否返回字典值創建每次一個新的對象則返回? Python第一次看到類定義時,是從字典中創建的對象嗎?

練習是一個遊戲,玩家可以在不同的場景之間進行遊戲。所以玩家可能會多次進入一個場景。如果代碼每次創建一個新對象,則會有與用戶進入場景的次數一樣多的對象。

回答

2

字典是在類Map創建時創建的,所有作爲字典值的類對象都在創建字典時被實例化。

是每次返回給定類的新對象嗎?

在類上只創建一個字典對象。當通過類訪問字典時,不會創建新的字符,如Map.scenes

是否返回字典值會在每次返回時創建一個新對象 ?

否。始終返回字典創建時的初始類實例。