学习python艰难的练习解释:

时间:2017-11-06 03:17:25

标签: python

我遇到了这个待办练习,但无法理解一些代码。

首先,我对流量控制感到困惑。我附加了一个具有相同分屏的屏幕截图。在第二个屏幕中它有对象声明并调用方法。屏幕截图还有我突出显示的编译输出。

以下是代码的一部分。

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.首先,使用Map()作为参数调用central_corridor类。根据该行,它应该打印Inside the Map class。但为什么我得到Inside Engine class 2. scene_map是什么?对象或对象的引用??
谢谢。

1 个答案:

答案 0 :(得分:1)

Engine类定义在Map

之上

打印的行写在类内,而不是在贡献者中。因此,只要将类加载到解释器,就会打印Inside class语句。