学习蟒蛇前43的艰难方式

时间:2015-05-18 22:05:07

标签: python python-2.7

我是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并使用无参数"调用它。

这怎么工作?任何见解将不胜感激!

2 个答案:

答案 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返回的方法。也就是说,从上下文猜测,可能是某种场景对象。