私は以下の優先順位が何をするかを理解することはできませんが、__getattribute__()
特別な方法とDescriptors
記述子:__getattributeて属性アクセスのも優先()__
の文脈においては、私はまだ、本からtopic("Precedence") - under topic ("Desriptors")
下Core Python Programming 3回これを読んでそれを通過することはできません..これらの優先順位は何であるか、そしてそれらがどこで使用されているのかを説明できますか?
- クラスのインスタンスは、私も、私は以下の文を見つけたpython documentationを、読ん
__getattr__()
にデフォルト設定
インスタンスバインディングの場合、ディスクリプタ呼び出しの優先順位は、どのディスクリプタメソッドが定義されているかによって異なります( )。記述子は、
__get__()
,__set__()
および__delete__()
の任意の組み合わせを定義できます。 が__get__()
を定義していない場合は、オブジェクトの インスタンス辞書に値がない限り、属性にアクセスすると 記述子オブジェクト自体が返されます。記述子が__set__()
および/または__delete__()
の場合は、データ記述子です。どちらも定義されていない場合は、非データ記述子です。通常、データディスクリプタは__get__()
と__set__()
の両方を定義し、データディスクリプタは__get__()
メソッドのみを定義します。
**__set__()**
と**__get__()**
のデータ記述子は、常に のインスタンスディクショナリの再定義を上書きします。対照的に、非データの 記述子は、インスタンスによって上書きされる可能性があります。
staticmethod()
とclassmethod()
を含むPythonメソッドは、非データ記述子として実装された です。したがって、インスタンスは メソッドを再定義してオーバーライドできます。これにより、個々のインスタンス は、同じクラスの他のインスタンスと異なる動作を取得できます。
誰かがfirst paragraph
について何かを説明する小さな例はありますか? また、 - override a redefinition in an instance dictionary
と言ってどういう意味ですか?
関連:[どのディスクリプタで最初にディスクリプタが見つかるのですか?](http://stackoverflow.com/questions/1865902/)、[Descriptors and python-provided attributes](http://stackoverflow.com)/question/10536539 /) –
@PiotrDobrogost ..これらのリンクのためのPiotrありがとう.. :) –