だから私はZed Shawさんの仕事をしていますPython The Hard Wayを学び、エクササイズ43までかなり良い成功を収めています。これはオブジェクト指向プログラミングの原則を使って非常に単純なテキストベースのゲームを作成する方法を説明しています。私は何度よりspecifially、属性のエラーを取得されています:PythonでAttributeErrorをデバッグする方法は?
File "PracticeGame.py", line 206, in <module>
a_game.play()
File "PracticeGame.py", line 20, in play
next_scene_name = current_scene.enter()
AttributeError: 'NoneType' object has no attribute 'enter'
私は、このエラーに関する複数の記事を見てきましたが、答えのどれも本当に私が理解できる方法で、この問題を説明していない、また解決策を提供してきました私のために働いた。以下のライン20を含むコードから線です:私は理解してから
class Map(object):
scenes = {
'central_cooridor': CentralCorridor(),
'laser_weapon_armory': LaserWeaponArmory(),
'the_bridge': TheBridge(),
'escape_pod': EscapePod(),
'death': Death()
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
return Map.scenes.get(scene_name)
def opening_scene(self):
return self.next_scene(self.start_scene)
:
class Scene(object):
def enter(self):
print "This scene is not yet configured. Subclass it and implement enter()."
exit(1)
class Engine(object):
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
current_scene = self.scene_map.opening_scene()
while True:
print "\n-------"
next_scene_name = current_scene.enter() #this is line 20
current_scene = self.scene_map.next_scene(next_scene_name)
return current_scene
これは、コードを含む行206
a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play() #line 206
地図は以下のように定義されるの終わりですこのエラーメッセージは、行20の一部が定義されていないことを意味しますが、定義されていないものと発生している理由については分かりません。私はPythonが初めてです。
'self.scene_map.opening_scene()'または 'Map'の定義を投稿してください。 – dm03514
私はちょうどその投稿にそれを追加しました、コメントですばらしく見えませんでした – Woomfy