__getattr__ と __getattribute__ の違い 質問する

__getattr__ と __getattribute__ の違い 質問する

__getattr__またはをいつ定義するかを理解しようとしています__getattribute__Python ドキュメント言及は__getattribute__新しいスタイルのクラスに適用されます。新しいスタイルのクラスとは何ですか?

ベストアンサー1

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

__getattribute__オブジェクトの実際の属性を確認する前に呼び出されるため、正しく実装するのが難しい場合があります。無限再帰に陥ってしまう可能性が非常に高くなります。

新しいスタイルのクラスは から派生し、古いスタイルのクラスは明示的な基底クラスを持たない Python 2.x のクラスです。ただし、とobjectのどちらかを選択する場合、古いスタイルのクラスと新しいスタイルのクラスの区別は重要ではありません。__getattr____getattribute__

あなたはほぼ間違いなく を望んでいます__getattr__

おすすめ記事