素材牛VIP会员
tornado源码中IOLoop类的raise NotImplementedError有什么用处?
 风***扬  分类:Python  人气:918  回帖:1  发布于6年前 收藏

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

感谢各位的解答!

 标签:tornadopython

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv2 入门
熊***子 学生 6年前#1

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

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

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取