Dekorator löschen, der Property in Python verwendet

8

Ich spiele mit der Eigenschaft in Python herum und frage mich, wie dieser @ propertyName.deleter Decorator funktioniert. Vermutlich vermisse ich etwas, ich konnte keine klaren Antworten von Google finden.

Was ich gerne erreichen möchte, ist, wenn dieses Verhalten deleter aufgerufen wird, kann ich andere Aktionen auslösen (z. B. mit meinem 3D-Anwendungs-SDK).

Im Moment scheint nur ein einfacher Ausdruck () nicht ausgelöst zu werden.

Wird Löschprogramm ausgelöst, wenn ich die Eigenschaft mit del (instance.property) lösche?

Sonst, wie kann ich das erreichen?

%Vor%

Vielen Dank (:

    
Xavier 16.12.2009, 04:11
quelle

2 Antworten

10

Machen Sie M zu einer neuen Stilklasse:

%Vor%

Siehe Ссылка :

  

Eigenschaften funktionieren nicht für Klassiker   Klassen , aber Sie werden nicht klar   Fehler, wenn Sie dies versuchen. Du bekommst   Methode wird aufgerufen, so scheint es   zu arbeiten, aber auf Attribut   Zuweisung, eine klassische Klasseninstanz   wird einfach den Wert in seiner setzen    dict ohne die set-Methode der Eigenschaft aufzurufen, und danach   die Methode get der Eigenschaft wird nicht sein   genannt entweder. (Sie könnten überschreiben    setattr , um dies zu beheben, aber es wäre unerschwinglich teuer.)

    
unutbu 16.12.2009, 04:16
quelle
6

In Python 3 würden Sie das Ergebnis von print sehen - und dann ein Attributfehler für den letzten Ausdruck (weil _m verschwunden ist). Möglicherweise verwenden Sie Python 2.6. In diesem Fall müssen Sie die class -Klausel in class M(object): ändern, um M new-style zu machen, und dann erhalten Sie dasselbe Verhalten wie in Python 3.

    
Alex Martelli 16.12.2009 04:21
quelle

Tags und Links