Warum wird der Deskriptor nicht aufgerufen, wenn er als Instanzattribut definiert ist?

8

Wenn ich die Variable "data" als eine Klassenvariable definiere, funktioniert das Folgende, aber wenn ich sie zu einer Objektvariablen mache, wird der Deskriptor nicht aufgerufen. Bitte helfen.

%Vor%     
Arovit 26.04.2014, 10:39
quelle

1 Antwort

12

Das liegt daran, dass Deskriptoren nur als Klassenattribute und nicht als Instanzattribute definiert werden sollten:

Von Dokumenten :

  

Die folgenden Methoden gelten nur für eine Instanz der Klasse   enthält die Methode (eine sogenannte Deskriptor-Klasse) erscheint in einem   Besitzerklasse ( Der Deskriptor muss entweder in der Klasse des Besitzers sein   Wörterbuch oder im Klassenwörterbuch für einen seiner Eltern ).

Damit Deskriptor auch mit Instanzattributen funktioniert, müssen Sie die Methode __getattribute__ von BusinessLogic überschreiben. (Haben Sie das nicht gründlich getestet, aber es funktioniert in Ihrem Fall gut):

%Vor%

Falls Sie einen Datendeskriptor haben, müssen Sie auch den __setattr__ -Teil verarbeiten.

%Vor%     
Ashwini Chaudhary 26.04.2014, 10:47
quelle

Tags und Links