高效的基于调度的调用,这可能是另一种语言中的switch语句。

switcheroo的Python项目详细描述


CircleCI

开关O

高效的基于调度的调用,这可能是另一种语言中的switch语句。

短期使用

fromswitcherooimportSwitchswitch=Switch({'foo':lambdax:x+1,})
>>> switch['foo'](1)
2
>>> switch['bar'](1)
Traceback (most recent call last):
...
KeyError: 'bar'
fromswitcherooimportSwitch,defaultswitch=Switch({'foo':lambdax:x+1,default:lambdax:x-1,})
>>> switch['foo'](1)
2
>>> switch['bar'](1)
0

装饰器使用

fromswitcherooimportSwitchswitch=Switch()@switch.handles('foo')defhandle_foo(x):returnx+1@switch.defaultdefhandle_others(x):returnx-1
>>> switch['foo'](1)
2
>>> switch['bar'](1)
0

类助手用法

classMoarThingz(object):switch=Switch()def__init__(self,state):self.state=state@switch.handles('foo')defhandle_foo(self,x):returnself.state-x@switch.defaultdefhandle_foo(self,x):returnself.state+xdefdispatch(self,case,factor,x):returnfactor*self.switch[case](self,x)
>>> things = MoarThingz(3)
>>> things.dispatch('foo', factor=1, x=1)
2
>>> things.dispatch('bar', factor=-1, x=2)
-5

子类用法

fromswitcherooimportSwitch,handles,defaultclassMySwitch(Switch):@handles('foo')defhandles(x):returnx+1@defaultdefdefault(x):returnx-1
>>> MySwitch['foo'](1)
2
>>> MySwitch['bar'](1)
0

变化

1.0.0(2019年2月27日)

  • 100%覆盖率检查和自动发布。

0.2.0(2018年12月13日)

  • 使用子类模式时处理子类。

0.1.0(2018年11月24日)

  • 初次发布。

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

推荐PyPI第三方库


热门话题
java需要设置框架。可设置大小(false)以重新绘制()   java我对PDF文件感到困惑   为什么是太阳。jvm。热点。调试器。DebuggerException:无法打开二进制文件`?   设置结果为textview时出现java空指针异常   我应该使用什么同步原语在Java中实现事件驱动程序框架?   java为什么WindowClosing处理程序在退出程序之前不执行后台任务?   如何将“20170712T18:43:04.000Z”转换为安卓或java中的相对时间?   Java,获取按键的时间长度,currentTimeMillies()始终为24   maven构建的java可执行Jar找不到logback。xml   java在其外部的函数中使用for循环中的值   java如何以表格格式将不同长度的数据对齐   java Play 2.5 WebSocket连接构建   maven而非eclipse的java强制转换问题   java如何在JFreeChart中使X轴上的值水平?   构建Java Windows应用程序以访问在线MySQL数据库需要什么   java添加构造函数会出错吗?这没有道理,请帮忙,编程问题   java在一个jframe中的两个JPanel中使用两个绘制方法   java数学或逻辑问题   java如何复制Androids库存摄像头方向更改