2015-04-12 96 views
0

所以我在這裏搜索了其他練習43個問題,沒有發現我遇到的問題。Learn Python the Hard Way練習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在一開始的屬性,並且似乎都正常,據我可以告訴格式化。遊戲應該看到「.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() 

感謝您的幫助!

+4

由於錯誤消息告訴你,'current_scene'是一個**函數**,而不是'Scene'子類實例;沒有[最小示例](http://stackoverflow.com/help/mcve),我不能告訴你爲什麼! – jonrsharpe

+1

您肯定需要顯示一些代碼。也許_你的類'Engine'(或類'Map')?可能是缺少'()',但沒有看到你的代碼,這是純粹的猜測... –

+0

添加在我的引擎類。據我所知,它看起來像文中提供的例子。 –

回答

2

正如我在評論中所說:失蹤()

def play(self): 
    current_scene = self.scene_map.opening_scene # <--- HERE !!! 
  • 隨着()右手邊是一個函數調用,並聲明將影響通話的結果current_scene
  • 沒有(),聲明將使current_scene參考函數本身。
+0

這工作,謝謝! –

相關問題