declarative包含类修饰符,用于以django模型类的样式定义具有子类语义的类。

tri.declarative的Python项目详细描述


三.声明性

tri.declarative包含使编写声明性代码更容易的工具。这包括:

类装饰器

只需几行代码,就可以将api从:

quux=Foo(things=[Bar(name='a',param=1),Bar(name='b',param=2),Bar(name='c',param=2)],baz=3)

入:

classQuux(Foo):a=Bar(param=1)b=Bar(param=2)c=Bar(param=2)classMeta:baz=3

如果方便的话,你还可以使用第一种款式!

下面是关于声明性的更详细用法示例。

评估

d=dict(foo=lambdax:x*2,bar=lambday:y+5,baz=[foo=lambdax:x*6,],)# evaluate only one levelassertevaluate(d,x=2)==dict(foo=4,bar=lambday:y+5,# this function doesn't match the signature so isn't evaluatedbaz=[foo=lambdax:x*6,# one level down so isn't evaluated],)# evaluate recursivelyassertevaluate_recursive(d,x=2)==dict(foo=4,bar=lambday:y+5,# this function doesn't match the signature so isn't evaluatedbaz=[foo=12,],)

过滤

d=dict(foo=dict(show=False,x=1,),bar=dict(show=True,x=2,),)assertfilter_show_recursive(d)==dict(bar=dict(show=True,x=2,),)

关键字参数调度

@发送:

@dispatch(bar={},baz__foo=2)deffoo(bar,baz):do_bar(**bar)do_baz(**baz)

获取/设置给定路径字符串的属性

classFoo(object):def__init__(a):self.a=aclassBar(object):def__init__(b):self.b=bclassBaz(object):def__init__(c):self.c=cx=Foo(Bar(Baz(c=3)))assertgetattr_path(x,'a__b__c')==3assertsetattr_path(x,'a__b__c',10)assertgetattr_path(x,'a__b__c')==10

运行测试

您需要安装TOX,然后只需进行测试

许可证

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

推荐PyPI第三方库


热门话题
java的单元测试测试用例库。util。列出实现   java通过超类进行序列化/反序列化   java Android获取设备语言ISO字符串   java如何打开广告的行动。移动   Eclipse IDE for(嵌入式C/C++)开发者202012:经典的深色主题深黑色背景和菜单中的文本   java使用不同的内容动态创建TableView(JavaFX)   java JAXB将多个同名节点解组   java ClassDefNotFoundException,即使类由类加载器加载(服务器上安装了多个应用程序)   java有没有办法关闭在后端生成的MqttClient线程?   html如何在网站上的java小程序中包含图像?   java无法访问已分配给超类引用的子类实例变量   java在TableViewer中双击打开对话框   列出如何创建ListNode。JAVA   java如何从文本中输出的数组中放入随机图像