注释很糟糕,所以让你的代码为你做它与番石榴一样的前提条件,实际上也做了一些事情。

pyConditions的Python项目详细描述


Build Status

注释是很糟糕的,所以让你的代码为你做它的前提条件是 做点什么。

示例:

frompyconditions.preimport*@Between("b",1,10)defdivideAbyB(a,b)returna/b@NotNone("a")@Between("a","a","n")@NotNone("b")@Between("b","n","z")defconcat(a,b):returna+b@Custom("a",lambdax:x%2==0)@Custom("b",lambdax:notx%2==0)defevenOdd(a,b):returna*b

文档本身就有代码,如果您违反了 先决条件,然后抛出一个pycondition异常 错误消息多于断开的代码。

evenOdd(3,1)
pyconditions.exceptions.PyCondition: 3 did not pass the custom condition for parameter 'a' in function evenOdd

一些后置条件怎么样?

frompyconditions.postimport*@NotNone()deftest(a):returna@Custom(lambdaa:a%2==0)defeven(a):returna
test(None)
pyconditions.exception.PyCondition: The return value for uber.awesome.project.test was None

你也可以把两者混合起来。

frompyconditionsimportprefrompyconditionsimportpost@pre.Custom("a",lamdaa:a%2==0)@post.Custom(lambdaa:a%2==0)defsuperSafeEven(a):returna

想要一些类不变的恶作剧吗?

frompyconditions.invariantimportInvariant,FieldsNotNone@FieldsNotNone(["test"])classTest:def__init__(self):self.test=1defadd(self):returnself.test+1defset(self,v):self.test=vt=Test()printt.add()t.set(None)

最后一次调用add将导致不变量失败,从而引发 以下内容:

pyconditions.exceptions.PyCondition: Field "test" was None when it should not have been in invariant "notNone"

需要自定义不变量吗?

frompyconditions.invariantimportCustomInvariantdefinvariant(self):returnself.test==1@CustomInvariant("test",invariant)classTest(object):def__init__(self):self.test=1defmethod1(self):self.test

这很好,但是环境会让我的代码慢很多?没问题。

frompyconditions.stageimportStagestage=Stage()stage.prod()

只要把它放在你的代码里,你就没事了。仍然有 一些开销,主要是每个方法有两个函数调用, 包装器和原始函数。但是,对于叠加的前提条件 它不会在其他条件下执行,并且 调用prod时的invraiants。如果你想回到dev然后 调用dev()

您想添加条件吗?使用代码打开PR。

有问题吗?使用固定代码打开PR。

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

推荐PyPI第三方库


热门话题
CentOS上的java Spring Boot简易应用程序需要很长时间才能启动   java如何检查字符串值是否等于null?   收集器中的java映射值。分组方式()   java需要支持Azure AD B2C webapp集成   java如何加入线程以停止它?   java如何使用意图传递类的对象?   java如何在战争环境中发现CDI生产者?   多模块项目中java奇怪的编译器行为   java如何在web应用程序中管理密码?   java从http服务器、filehandler中删除冗余代码   java使用反射来获取泛型类的字段   java Spring MVC/Hibernate/MySQL 400错误请求错误   给定正整数a的java幂为3   在Java中将元素拆分为不同数量的列表?   java展开折叠窗格