我是python的新手,目前正在通过zed shaw的艰难方式学习python而我在ex43,我正在学习如何从课堂上制作游戏。
完整的代码在http://learnpythonthehardway.org/book/ex43.html
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('finished')
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
# be sure to print out the last scene
current_scene.enter()
我对此行感到困惑
next_scene_name = current_scene.enter()
根据我的理解,current_scene
实际上不是一个对象,而是来自作为参数opening_scene()
传递的对象的方法scene_map
,但该行在{{1}中说"获取方法current_scene
并使用无参数"调用它。
这怎么工作?任何见解将不胜感激!
答案 0 :(得分:2)
current_scene
分配了self.scene_map.opening_scene()
方法调用的结果。所以它不是指方法本身,而是指返回的方法。该对象具有enter()
方法。
答案 1 :(得分:0)
opening_scene
是方法,opening_scene()
调用没有参数的方法。在current_scene = self.scene_map.opening_scene()
之后,current_scene
保留opening_scene
返回的方法。也就是说,从上下文猜测,可能是某种场景对象。