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()
感谢各位的解答!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
谢谢邀请,这个的主要作用是针对接口做编程。
先定义接口,因为某些原因暂时无法实现的,或者计划这个版本里不做的,预留一个位置,就用异常来提示,还有一种情况,就是父类做接口,但父类不涉及实现,就用这种方法来强制约定使用子类的实现,你说的这个情况应该属于这个归属。
这个也比较容易理解,tornado目标是一个跨平台的IO复用框架,但底层实现受限于各个操作系统的实现,比如windows是IOCP, linux是epoll,select等,为了让接口和实现分离,所以定义一个统一的接口,然后由具体的平台实现。
如果python是强类型语言,就可以在编译的时候给出提示,但python不是,所以用异常来在运行时给出提示。
这篇文章写的不错,可以参考下
http://blog.zorro.im/posts/tornado-configurable.html