私はこの練習に出くわしましたが、いくつかのコードを理解することができませんでした。python難解な方法を説明するエクササイズ:43
まず、フロー制御と混同しています。同じ画面を分割したスクリーンショットを貼り付けました.2番目の画面にはオブジェクト宣言とメソッド呼び出しがあります。スクリーンショットにはコンパイルされた出力もあります。
ここはコードの一部です。
class Engine(object):
print 'Inside Engine class'
def __init__(self, scene_map):
self.scene_map = scene_map
print 'scene_map is:',self.scene_map
def play(self):
print "inside play ",self
flag = True
current_scene = self.scene_map.opening_scene()
if current_scene =="finish":
flag = False
while flag:
print "\n--------"
next_scene_name = current_scene.enter()
if next_scene_name == "finish":
exit(0)
else:
current_scene = self.scene_map.next_scene(next_scene_name)`
class Map(object):
print "inside map class"
scenes = {
'central_corridor': CentralCorridor(),
'laser_weapon_armory': LaserWeaponArmory(),
'the_bridge': TheBridge(),
'escape_pod': EscapePod(),
'death': Death(),
'finish':Finish()
}
def __init__(self, start_scene):
print start_scene
self.start_scene = start_scene
def next_scene(self, scene_name):
return Map.scenes.get(scene_name)
def opening_scene(self):
print "inside opening scene"
return self.next_scene(self.start_scene)`
a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play()
出力:
Inside engine class
inside map class
Central_corridor
scene_map is: <__main__.Map object at 0x00000000029B7908>
inside play <__main__.Engine object at 0x00000000029B7940>
1.Firstly、Map()
クラスをパラメータとしてcentral_corridor
と呼ばれています。その行によると、それはInside the Map class
を印刷する必要があります。しかし、なぜ私は得ていますInside Engine class
2.whatはscene_map
ですか?オブジェクトまたはオブジェクトへの参照?
ありがとうございます。
コードまたはエラーメッセージをイメージとしてではなくテキストとして入力しないでください。 – eyllanesc
@eyllanesc - あなたは正しいですが、画像を埋め込むために私の編集を元に戻す必要はありません。リンクをクリックする必要はありません。この質問を理解するのは十分です... –
@DavidMakogonこの方法を有効にすると、イメージをコードまたはエラーメッセージとして配置する動作がサポートされます。私はまた、画像を表示するためにそれを有効にしたいが、それは私がしなかったエラーメッセージであることを見ていた。 – eyllanesc