我遇到了这个待办练习,但无法理解一些代码。
首先,我对流量控制感到困惑。我附加了一个具有相同分屏的屏幕截图。在第二个屏幕中它有对象声明并调用方法。屏幕截图还有我突出显示的编译输出。
以下是代码的一部分。
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
是什么?对象或对象的引用??
谢谢。
答案 0 :(得分:1)
Engine
类定义在Map
。
打印的行写在类内,而不是在贡献者中。因此,只要将类加载到解释器,就会打印Inside class
语句。