2017-03-02 13 views
0

Pythonでの属性参照に関する疑問があります。私はinstance.attributeのような属性参照はボトムアップのアプローチだと思っていました。 まず、その属性がインスタンス辞書で検索されます。しかし、私は属性検索がトップダウンアプローチ、すなわち属性が参照されるときに、Class.__getattribute__が最初のステップとして呼び出されると主張する記事を読んでいました。ここinstanceは、クラスのインスタンスがあるClassPythonでの属性の参照

私の質問の属性は、ボトムアップやトップを参照です

  1. (データ記述子または非データ記述子を含むことができ、クラスを考慮して)されたが、ダウン
  2. は両方のように見える

    同様の結果が得られます。私はここで正しいですか?

答えて

0

属性がボトムアップまたはトップダウンの参照です

私はボトムアップまたはトップダウンとしてそれを分類しないでしょう。 Pythons __getattribute__は、クラスディクショナリを最初に検索して、データディクショナリが存在する場合は最初に検索し、インスタンスディクショナリでインスタンス変数を検索します(データディクショナリが見つからない場合)。

両方が同様の結果を

を与えるように、それは(例えば最初の)厳密ボトムアップした場合はありません、そのデータ記述子と同じ名前のインスタンス変数は、それをマスクになる見えます。

トップダウンの場合は、インスタンス変数と同じ名前の非データ記述子がマスクされます。

関連する問題