新手问题。有人可以帮我理解下面发生的事吗?
这一切都来自于学习python的难度ex43 - http://learnpythonthehardway.org/book/ex43.html
班级引擎如何知道列表中的第一个“场景”来自Map类? 这种交接发生在哪里?
我也不确定Engine和Map类是如何通信的。我看到它在底部被实例化,但是有可能有一个实例化对象(a_map)然后再次实例化该对象(由a_game)?
示例:
a_map = Map('1')
a_game = Engine(a_map)
这是完整的代码。
class Engine(object):
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
current_scene = self.scene_map.opening_scene()
last_scene = self.scene_map.next_scene('2')
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
class FristLevel(object):
def enter(self):
pass
class SecondLevel(object):
def enter(self):
pass
class Map(object):
scenes = {'1' : FristLevel(),
'2' : SecondLevel()}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
pass
def opening_scene(self):
pass
a_map = Map('1')
a_game = Engine(a_map)
a_game.play()
答案 0 :(得分:1)
我不确定你的问题是什么,但我会尝试为你分解代码。 。
a_map = Map('1')
这将创建Map
的新实例,并将其存储在名称a_map
中。
a_game = Engine(a_map)
这将创建Engine
的新实例,并将其存储在名称a_game
中。请注意,输入参数为a_map
。在这种情况下,Map
实例将传递给Engine.__init__
并存储为scene_map
属性。在上面的示例中,如果您要写:
a_game.scene_map is a_map
结果为True
,因为它们都是同一个Map
实例的名称。