Frage Was ist der Unterschied zwischen setattr () und object .__ setattr __ ()?


Ich weiß, dass du nicht anrufen kannst object.__setattr__ auf Objekte, die nicht von geerbt wurden objectAber gibt es noch etwas anderes zwischen den beiden? Ich arbeite in Python 2.6, wenn das wichtig ist.


9
2017-09-26 17:57


Ursprung


Antworten:


setattr(instance, name, value) ist syntaktischer Zucker für instance.__setattr__(name, value).

Sie müssten nur anrufen object.__setattr__(...) innerhalb einer Klassendefinition und nur dann, wenn direkt Unterklassen object - Wenn du etwas anderes unterklassierst, Spam Zum Beispiel sollten Sie dann entweder verwenden super() um den nächsten Gegenstand in der Hierarchie zu bekommen oder anzurufen Spam.__setattr__(...) - Auf diese Weise riskierst du kein fehlendes Verhalten, das Superklassen definiert haben, indem du sie direkt überspringst object.


13
2017-09-26 18:10