学习Python艰难的练习43错误

时间:2015-04-12 20:54:49

标签: python

所以我在这里搜索了43个其他练习题,没有人遇到过这个问题。

供参考:http://learnpythonthehardway.org/book/ex43.html

创建完全按照原样显示的游戏(据我所知),我不能为我的生活弄清楚如何让它运行。这是我得到的错误:

Traceback (most recent call last):
  File "ex43.py", line 220, in <module>
    a_game.play()
  File "ex43.py", line 20, in play
    next_scene_name = current_scene.enter()
AttributeError: 'function' object has no attribute 'enter'

我的所有场景在开始时都有一个输入属性,就我所知,所有场景似乎都被正确格式化了。游戏应该看到“.enter()”并直接在“CentralCorridor”类中打印它下面的内容。有谁知道如何解决这个错误?

以下是中央走廊场景的一小部分:

class CentralCorridor(Scene):

    def enter(self):
        print "bla"
        print "more bla"

以下是引擎代码的外观:

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)

        current_scene.enter()

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

正如我在评论中所说:缺少()

def play(self):
    current_scene = self.scene_map.opening_scene  # <--- HERE !!!
  • 使用()右侧是函数调用,该语句将影响对current_scene的调用的结果
  • 如果没有(),该语句将current_scene引用功能本身。