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

发布于 2022-09-02 14:18:19 字数 339 浏览 11 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋心╮凉 2022-09-09 14:18:19

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文