次のコードは、Python 2とPython 3では動作が異なりますが、その理由はわかりません。Python 2と3の "dir"の相違点
class Dataset(object):
def __getattr__(self, item):
if not item in dir(self):
print(item)
a = Dataset()
a.Hello
のPython 3での結果:
> Hello
のPython 2での結果:再帰天井に到達するまで
__members__
__members__
__methods__
...
無限。 "dir"の動作の違いは何ですか?
編集:回避策はありますか?自己。 dictは明らかな選択ですが、私のコードでは問題となる機能は含まれていません。
としてあなたのコードを持つことができ (自己)と呼ばれないことを確認するために必要ではないです属性が既に存在する場合、 '__getattr __()' [[呼び出されることはまったくありません]](https://docs.python.org/2/reference/datamodel.html#object.__getattr__)です。 – dhke