作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Zed Shaw 的 LearnPythontheHardWay,但我被难住了。
我收到错误:
[Attribute Error:'NoneType' object has no attribute 'enter']
在行:Engine
类下的 next_scene_name = current_scene.enter()
。
from sys import exit
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()
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()
class EmptyScene(Scene):
def enter(self):
pass
class FinishScene(Scene):
def enter(self):
pass
class Map(object):
scenes = {
'empty_scene': EmptyScene(),
'finished': FinishScene(),
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
val = Map.scenes.get(scene_name)
return val
def opening_scene(self):
return self.next_scene(self.start_scene)
a_map = Map('empty_scene')
a_game = Engine(a_map)
a_game.play()`
最佳答案
问题是 current_scene
实际上是 None
。这是由于 self.scene_map.next_scene
调用 dict.get
引起的。使用 dict.get
的问题在于,如果键不在字典中,那么它只会返回 None
而不是像您期望的那样抛出异常。因此,您的程序会继续运行,认为一切正常,直到代码稍后出现问题。
关于python - 艰难地学习 Python 示例 #43,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065462/
我是一名优秀的程序员,十分优秀!