1. ホーム
  2. python

[解決済み] __getattr__ と __getattribute__ の違い

2022-03-20 17:08:23

質問

を使用するタイミングを理解しようとしています。 __getattr__ または __getattribute__ . は ドキュメンテーション 言及 __getattribute__ は新スタイルのクラスに適用されます。新スタイルのクラスとは何ですか?

どのように解決するのですか?

との主な違いは __getattr____getattribute__ は、その __getattr__ は、通常の方法で属性が見つからなかった場合にのみ呼び出されます。 これは、属性が見つからない場合のフォールバックを実装するのに適しており、おそらくあなたが望む2つのうちの1つでしょう。

__getattribute__ はオブジェクトの実際の属性を見る前に呼び出されるため、正しく実装するのが難しい場合があります。 無限ループに陥る可能性があります。

新スタイルのクラスは object Python 2.xでは、古いスタイルのクラスは明示的な基底クラスがないものです。 しかし、古いスタイルのクラスと新しいスタイルのクラスの区別は __getattr____getattribute__ .

ほぼ間違いなく __getattr__ .