Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python多实例化和传递值_Python_Class_Instantiation - Fatal编程技术网

python多实例化和传递值

python多实例化和传递值,python,class,instantiation,Python,Class,Instantiation,新手问题。有人能帮我理解下面发生的事情吗 这都是从学习python的艰辛之路ex43- 类引擎如何从类映射中知道列表中的第一个“场景”是什么? 这种交接发生在哪里 我也不确定引擎和Map类如何通信。我看到它是在底部实例化的,但是有可能有一个实例化的对象(一个映射)然后再次实例化该对象(通过一个游戏) 例如: a_map = Map('1') a_game = Engine(a_map) 这是完整的代码 class Engine(object): def __init__(self,

新手问题。有人能帮我理解下面发生的事情吗

这都是从学习python的艰辛之路ex43-

类引擎如何从类映射中知道列表中的第一个“场景”是什么? 这种交接发生在哪里

我也不确定引擎和Map类如何通信。我看到它是在底部实例化的,但是有可能有一个实例化的对象(一个映射)然后再次实例化该对象(通过一个游戏)

例如:

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()

我不太确定你的问题是什么,但我会试着为你把代码分解一下

a_map = Map('1')
这将创建
Map
的新实例,并将其存储在名称
a_Map

a_game = Engine(a_map)
这将创建一个新的
引擎实例
,并将其存储在name
a_game
中。请注意,输入参数是
a_map
。在这种情况下,
Map
实例被传递到
Engine.\uuuu init\uuuu
并存储为
scene\u Map
属性。在上面的示例中,如果要编写:

a_game.scene_map is a_map

结果将是
True
,因为它们都是相同的
Map
实例的名称。

好的,这很有帮助,我对变量a_game如何调用Map scenes列表中的不同项目感到困惑。因此,如果我想从引擎调用Map.scenes列表中的其他项目,我该怎么做?