python - tornado源码中IOLoop类的raise NotImplementedError有什么用处?

查看:238
本文介绍了python - tornado源码中IOLoop类的raise NotImplementedError有什么用处?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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()

感谢各位的解答!

解决方案

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

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

这篇关于python - tornado源码中IOLoop类的raise NotImplementedError有什么用处?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆