python - tornado源码中IOLoop类的raise NotImplementedError有什么用处?
伊谢尔伦
伊谢尔伦 2017-04-17 17:38:02
[Python讨论组]

tornado源码中IOLoop类中的许多方法都只有raise NotImplementedError(),这样做有什么用处,运行时为何不会报错?

例如:

def close(self, all_fds=False):
    raise NotImplementedError()

def start(self):
    raise NotImplementedError()

def add_handler(self, fd, handler, events):
    raise NotImplementedError()

感谢各位的解答!

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
怪我咯

谢谢邀请,这个的主要作用是针对接口做编程。
先定义接口,因为某些原因暂时无法实现的,或者计划这个版本里不做的,预留一个位置,就用异常来提示,还有一种情况,就是父类做接口,但父类不涉及实现,就用这种方法来强制约定使用子类的实现,你说的这个情况应该属于这个归属。
这个也比较容易理解,tornado目标是一个跨平台的IO复用框架,但底层实现受限于各个操作系统的实现,比如windows是IOCP, linux是epoll,select等,为了让接口和实现分离,所以定义一个统一的接口,然后由具体的平台实现。
如果python是强类型语言,就可以在编译的时候给出提示,但python不是,所以用异常来在运行时给出提示。

这篇文章写的不错,可以参考下
http://blog.zorro.im/posts/tornado-configurable.html

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号