这是我之前的问题的后续
我正在使用PyContract(不是PyContracts)为类方法编写一些约束。作为后置条件,我想确保某个对象的内存地址没有改变,即id(myObj)
在调用函数之前和之后应该是相同的。我怎样才能用 PyContract 做到这一点?
这就是我现在正在做的事情:
def foo(param1, param2)
"""
# some other constraints
post[param1, param2]:
__old__.param1 is param1
__old__.param2 is param2
"""
但是,该后置条件失败。我只能想象这是因为__old__.param1
它没有存储在与 is 相同的内存位置param1
。这是有道理的,因为 PyContract 需要制作param1
before执行的副本,以便根据after执行foo
的值检查其值。param1
foo
假设上面的分析是真的,它只是用来解释为什么id(__old__.param1)
不同id(param1)
。但是,它仍然没有回答我如何确保id(param1)
不会因为foo
. 我怎么能在 PyContract 中检查这个?