私は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前のコピーを作成する必要があるからです。fooparam1foo
上記の分析が正しいと仮定すると、id(__old__.param1)が と異なる理由を説明するだけid(param1)です。id(param1)ただし、の副作用として変更されないようにする方法については、まだ回答がありませんfoo。PyContract でこれを確認するにはどうすればよいですか?