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解析Html并将结果作为字符串   java我的switch语句有点问题   java在注册后为新用户生成唯一的用户ID   Java 8 lambda表达式字节码一致性   Java应用程序的playframework类型安全控制台配置   java将mxGraph导出到SVG(或任何类型的图像)   业务逻辑之前的java执行方法   LinkedList输出null的Java实现   java需要帮助检查值是否为1   java Delaunay三角形点连通性?   使用setImageResource的java相对路径   java获取方法所消耗的时间   正则表达式当字符串不匹配时,为什么javagrok返回最后一次成功匹配?   java在Spring批处理作业之后触发Spring集成出站适配器   集合Java按降序遍历映射集,返回所需的输出   代表设计模式在Swagger生成代码中的java意义?   如何使用Java代码将Sql Server的数据(行)实时复制到MySql中?