gpt4 book ai didi

python - 在 Python 中使用契约式设计

转载 作者:IT老高 更新时间:2023-10-28 21:37:59 24 4
gpt4 key购买 nike

我希望在工作中的大量基于 Python 的项目中开始使用 DBC,并且想知道其他人使用它有什么经验。到目前为止,我的研究结果如下:

我的问题是:您是否将 DBC 与 Python 一起用于成熟的生产代码?它的效果如何/值得付出努力吗?您会推荐哪些工具?

最佳答案

您找到的 PEP 尚未被接受,因此没有标准或可接受的方式来执行此操作(但是 - 您始终可以自己实现 PEP!)。但是,正如您所发现的,有几种不同的方法。

可能最轻量级的就是简单地使用 Python 装饰器。 Python Decorator Library 中有一组用于前置/后置条件的装饰器使用起来非常简单。这是该页面的示例:

  >>> def in_ge20(inval):
... assert inval >= 20, 'Input value < 20'
...
>>> def out_lt30(retval, inval):
... assert retval < 30, 'Return value >= 30'
...
>>> @precondition(in_ge20)
... @postcondition(out_lt30)
... def inc(value):
... return value + 1
...
>>> inc(5)
Traceback (most recent call last):
...
AssertionError: Input value < 20

现在,您提到了类不变量。这些有点困难,但我要解决的方法是定义一个可调用来检查不变量,然后在每个方法调用结束时使用后置条件装饰器检查该不变量。作为第一次切割,您可能可以按原样使用后置条件装饰器。

关于python - 在 Python 中使用契约式设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com