Dies ist eine akademische Frage, mehr als eine praktische Frage. Ich versuche, in die Grundlagen von Python einzutauchen, und ich frage mich: Könnte ich die staticmethod
und classmethod
Dekoratoren in reinem Python implementieren, wenn ich wollte?
Für staticmethod
könnte ich vielleicht einen Verweis auf die ursprüngliche Funktion behalten und es das erste Argument weglassen?
Für classmethod
könnte ich vielleicht einen Verweis auf die ursprüngliche Funktion behalten und sie den Typ des ersten Arguments übergeben, anstatt das Argument selbst? (Wie würde ich damit umgehen, dass ich direkt in der Klasse angerufen werde?)
Auch hier möchte ich es nicht in meinen Programmen implementieren. Ich möchte lernen, wie die Sprache daraus funktioniert. Wenn es möglich ist, würde ich Code-Beispiele wirklich schätzen. Wenn nicht, würde ich mich über Erklärungen freuen, warum dies theoretisch nicht möglich ist. Danke!
Bearbeiten: Danke für die Antwort und den Hinweis auf das Deskriptorprotokoll! Um mein Verständnis von Python weiter zu vertiefen, möchte ich zwei weitere Dinge fragen:
Könnte dies ohne das descriptor-Protokoll geschehen, zum Beispiel durch die Implementierung der speziellen Methode __ call __ in unseren Klassen?
Funktioniert das Deskriptor-Protokoll in Python 2.7 und in Python 3.x genauso?
Nochmals vielen Dank!
Sie sollten JF Sebastians Antwort akzeptieren, da sie Ihre Frage direkt beantwortet, aber wenn Sie diese Frage stellen, wollen Sie etwas über das Deskriptor-Protokoll wissen, das Sie über hier , mit dem diese und andere wichtige Python-Interna implementiert werden (und bei sparsamer Verwendung in Ihrem eigenen Code nützlich sein können). property
und reguläre ol 'gebundene Methoden sind andere Dinge, die mit dem Deskriptor-Protokoll geschrieben werden.
Sie sollten es überprüfen, es ist nicht so einfach, wenn Sie zuerst darüber lesen, aber es wird klicken.
Tags und Links python decorator static-methods class-method