Ich kann nicht verstehen, was den unten Vorrang bedeutet, hat in Zusammenhang mit __getattribute__()
spezieller Methode und Descriptors
Descriptors: precendence von Attribut-Zugriff über __getattribute() __
Ich lesen diese unter den topic("Precedence") - under topic ("Desriptors")
aus Buch Core Python Programming 3-mal, noch kann nicht durchkommen .. Kann irgendjemand erklären, wovor diese Präzedenzfälle stehen und wo sie verwendet werden?
- Klassen-Attribute
- Daten Deskriptoren
- Instanz Attribute
- Nicht-Daten-Deskriptoren
- Säumigen zu
__getattr__()
Ich las auch die python documentation, wo ich die unten Erklärung gefunden: -
Bei Bindings hängt die Priorität des Deskriptoraufrufs davon ab, welche Deskriptormethoden definiert sind. Ein Deskriptor kann irgendeine Kombination von
__get__()
,__set__()
und__delete__()
definieren. Wenn__get__()
nicht definiert ist, wird beim Zugriff auf das Attribut das Deskriptorobjekt zurückgegeben, sofern kein Wert im Instanzwörterbuch des Objekts vorhanden ist. Wenn der Deskriptor__set__()
und/oder__delete__()
definiert, ist es ein Datendeskriptor; Wenn es keine definiert, ist es ein Nicht-Datendeskriptor. Normalerweise definieren Datendeskriptoren sowohl__get__()
als auch__set__()
, während Nicht-Datendeskriptoren nur die__get__()
Methode haben.Datendeskriptoren mit
**__set__()**
und**__get__()**
definiert immer überschreiben eine Neudefinition in einem Instanzwörterbuch. Im Gegensatz dazu können Nicht-Daten Deskriptoren von Instanzen überschrieben werden.Python-Methoden (einschließlich
staticmethod()
undclassmethod()
) sind implementiert als Nicht-Datendeskriptoren. Dementsprechend können Instanzen Methoden neu definieren und überschreiben. Dadurch können einzelne Instanzen Verhaltensweisen erfassen, die sich von anderen Instanzen derselben Klasse unterscheiden.
Kann jemand ein kleines Beispiel geben, um zu erklären, worum es bei der first paragraph
geht? Auch was bedeutet es - override a redefinition in an instance dictionary
??
Related: [Welche Python-Sprachregel erlaubt den Deskriptor zuerst zu finden?] (Http://stackoverflow.com/questions/1865902/), [Deskriptoren und Python-bereitgestellten Attribute] (http://stackoverflow.com/questions/10536539 /) –
@PiotrDobrogost .. Danke Piotr für diese Links .. :) –