蟒蛇的多个参数调度

chatora.dispatch的Python项目详细描述


chatora.dispatch

为python分派多参数。

用法

将函数转换为调度泛型函数,如functools.singledispatch。 与functools.singledispatch不同,它支持多分派。

fromchatora.dispatch.apiimportdispatch@dispatchdeffunc(arg0,arg1):return'1st func'assertfunc(0,0)=='1st func'assertfunc('0','0')=='1st func'@func.registerdef_(arg0,arg1:int):return'2nd func'assertfunc(0,0)=='2nd func'assertfunc('0',0)=='2nd func'assertfunc('0','0')=='1st func'@func.registerdef_(arg0:int,arg1:int):return'3rd func'assertfunc(0,0)=='3rd func'assertfunc('0',0)=='2nd func'assertfunc('0','0')=='1st func'

它部分支持typing.union、typing.optioanl和typing.any的参数。 键入.any等同于空批注。

fromchatora.dispatch.apiimportdispatchimporttyping@dispatchdeffunc(arg0:typing.Any,arg1:typing.Any):return'1st func'@func.registerdef_(arg0:typing.Optional[str],arg1:typing.Union[str,list,tuple]):return'2nd func'assertfunc(0,0)=='1st func'assertfunc('0',0)=='1st func'assertfunc('0','0')=='2nd func'assertfunc('0',[])=='2nd func'assertfunc(None,())=='2nd func'

它还部分支持返回类型注释。

fromchatora.dispatch.apiimportdispatchimporttypingclassResultTuple(tuple):def__new__(cls,*args):returnsuper().__new__(cls,args)classResultClass:def__init__(self,a,b):self.a,self.b=a,b@dispatchdeffunc(arg0:typing.Optional[str],arg1:tuple):return'1st func'@func.registerdef_(arg0:typing.Optional[str],arg1:tuple)->typing.Sequence[str]:return['2nd','func']@func.registerdef_(arg0:typing.Optional[str],arg1:tuple)->typing.Tuple[str]:return('3rd','func')@func.registerdef_(arg0:typing.Optional[str],arg1:tuple)->ResultTuple:returnResultTuple('4th','func')@func.registerdef_(arg0:typing.Optional[str],arg1:tuple)->ResultClass:returnResultClass('4th','func')assertfunc('0',())=='1st func'assertfunc('0',(),_return_type=typing.Sequence[str])==['2nd','func']assertfunc('0',(),_return_type=typing.Tuple[str])==('3rd','func')assertfunc('0',(),_return_type=ResultTuple)==ResultTuple('4th','func')assertisinstance(func('0',(),_return_type=ResultClass),ResultClass)

更改日志

0.1(2019-05-01)

  • 出生!

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

推荐PyPI第三方库


热门话题
java模拟存储库对象从controller testcase返回空结果?   Java扫描程序跳行异常   c#混淆If语句?   java为什么日志中的stacktrace前面没有这一行?   java如何使SSHJ在非标准端口上启动出站SFTP?   java我如何确定为什么每周收入没有在我的程序中显示前三次?   java如何判断堆叠条形图的轴的行为?   java rest json API的Web服务器体系结构   java ClassCastException:javax。摆动按扭   Java在Linux上不读取excel文件(使用Apache POI)   反馈错误后,java Wicket 1.4.9无法从modal使用AjaxRequestTarget!   java方法头中“静态”的含义是什么?   java无法在我的tomcat应用程序中添加外部库   java使用Itext Pdf将图像添加到Pdf文件   java为什么当我调用universe时java3d会闪烁。getCanvas()。getView()。重新油漆();   java Gson嵌套类在使用proguard时为空   java如何确定JSON路径对文档是否有效   java在使用Jsoup解析时保持HTML布尔属性的原始形式   使用Java SDK,如何在Azure存储文件服务中为文件设置元数据?