多次调度

multipledispatch的Python项目详细描述


Build StatusCoverage StatusVersion Status

在python中实现多个分派的相对理智的方法。

这种多重调度的实现是高效的,基本上是完整的, 执行静态分析以避免冲突,并提供可选的命名空间 支持。看起来也不错。

参见https://multiple-dispatch.readthedocs.io/

示例

>>>frommultipledispatchimportdispatch>>>@dispatch(int,int)...defadd(x,y):...returnx+y>>>@dispatch(object,object)...defadd(x,y):...return"%s + %s"%(x,y)>>>add(1,2)3>>>add(1,'hello')'1 + hello'

这是什么

  • 对所有非关键字参数进行调度
  • 支持继承
  • 支持实例方法
  • 支持联合类型,例如(int, float)
  • 支持内置抽象类,例如Iterator, Number, ...
  • 快速重复查找的缓存
  • 识别函数定义时可能存在的歧义
  • 提供解决出现歧义的提示
  • 支持具有可选关键字参数的命名空间
  • 支持可变分派

这不能做什么

  • 对角线调度
a=arbitrary_type()@dispatch(a,a)defare_same_type(x,y):returnTrue
  • 高效更新:添加新签名需要 整个功能。到了几百以后就麻烦了 键入签名。

安装和依赖项

multipledispatch在python包索引(pypi)上:

pip install multipledispatch

easy_install multipledispatch

multipledispatch支持python 2.6+和python 3.2+,其中 代码库。它是纯python,只需要小的six库作为依赖项。

简言之,这是一种对体重的依赖。

许可证

新的疯牛病。见License file

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
尝试执行abox SWRL API命令时发生java错误   java Hibernate对象状态   java如何使用Spring从JSON获取相关对象?   安卓获取文件的最后修改日期而不是Java中的最后创建日期   java如何在旧JDK版本和新JDK版本之间切换,以及在这种情况下如何设置系统变量值?   java将按钮OnClick与RecyclerView in Fragment中的行OnClick分开   具有高级接口的java DynamoDB扫描   在Java中从静态成员调用非静态方法   mockito junit未涵盖接口中的java方法   java Eclipse包不存在   java Ebean模型将自身映射到@OneToMany   使用java将刮取的数据从网页存储到json对象   多线程Java GUI未更改