2017-06-18 6 views
1

Exercise 43からコンストラクタを返すことによって、オブジェクトを作成します。辞書はクラス内で定義されています。 このクラスがディクショナリ値の1つを返すときに何が起こるのか分かりません。指定されたクラスの新しいオブジェクトが毎回返されますか?LPTHW演習43 - ハード・ウェイは、その値がコンストラクタある辞書を使用して学習のPythonの辞書

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 

辞書から値を返すメソッドですdictの値が、新しいオブジェクトたびそれが返されますを作成返却していますか? Pythonが最初にクラス定義を見ているときに、辞書のオブジェクトが先に作成されていますか?

運動は、プレーヤーが異なるシーン間で行くことができるゲームです。したがって、プレーヤーは潜在的に1つのシーンに複数回入ることができます。コードが毎回新しいオブジェクトを作成する場合、ユーザーがシーンに入る回数と同じ数のオブジェクトが存在します。

答えて

2

クラスMapが作成されたときに辞書が作成され、辞書値として機能するすべてのクラスのオブジェクトは、辞書作成時に一度インスタンス化されています。

は、与えられたクラスの新しいオブジェクトが毎回返されますか?

つだけのdictオブジェクトがクラスに作成されます。 DICKにMap.scenesのようにクラスを介してアクセスすると、新しいものは作成されません。

dict値を返すと、 が返されるたびに新しいオブジェクトが作成されますか?

番号辞書作成時の初期クラスのインスタンスは常に返されます。