機能純度の継承はどのように機能しますか?例えば、私は、このコードに期待する:それは遅延インスタンスから属性にアクセスしているので、ラインOut[154]
とOut[155]
は、同じキーを得純度の継承
In [150]: myObj = delayed(dict,{}, pure=True)
In [151]: myObj
Out[151]: Delayed('dict-343cc4b6676839eb7fd74272cd0a1ed1')
In [152]: myObj = delayed(dict,{}, pure=True)
In [153]: myObj
Out[153]: Delayed('dict-343cc4b6676839eb7fd74272cd0a1ed1')
In [154]: myObj.foo
Out[154]: Delayed('getattr-e1ffa164-8c0e-40ac-9e84-2dc2ed334f93')
In [155]: myObj.foo
Out[155]: Delayed('getattr-c0b9af63-2145-498a-979b-cdfb8e6a30a9')
In [156]: delayed(getattr,pure=True)(myObj, 'foo')
Out[156]: Delayed('getattr-5f98e6d14b9694ba16542b61a770d0f0')
In [157]: delayed(getattr,pure=True)(myObj, 'foo')
Out[157]: Delayed('getattr-5f98e6d14b9694ba16542b61a770d0f0')
は純粋に宣言しました。しかし、そうではなく、純粋に実施する唯一の方法は、[156]
と[157]
のように、明示的に宣言することです。
これは、純度がどのように受け継がれているかという質問につながります。これに関する一般的な規則はありますか?これは意図的に未定義ですか?
ありがとうございました! :-)
編集:この質問はhereに移動しました。解決されると、更新が掲示されます。
EDIT 2:[156]の終わりにpure=True
外来を除去し、[157]
いいね、そこに投稿しました、ありがとう! :-) – julienl