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 (:
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.)
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.
Tags und Links python decorator properties