首页 / PYTHON / 艰难地学习Python示例#43
艰难地学习Python示例#43
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了艰难地学习Python示例#43,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1373字,纯文字阅读大概需要2分钟。
内容图文
![艰难地学习Python示例#43](/upload/InfoBanner/zyjiaocheng/693/19bc3483b8c34a28a9832e2a63c6c5e1.jpg)
我正在研究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 implemententer()."
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.这是由于调用dict.get调用self.scene_map.next_scene引起的.使用dict.get的问题在于,如果密钥不在字典中,则它将仅返回None而不是像您期望的那样引发异常.因此,您的程序会继续运行,以为一切都很好,直到在代码中出现很多问题为止.
内容总结
以上是互联网集市为您收集整理的艰难地学习Python示例#43全部内容,希望文章能够帮你解决艰难地学习Python示例#43所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。