Questa è una domanda accademica, più che pratica. Sto cercando di approfondire le basi di Python, e mi chiedo: potrei implementare i decoratori staticmethod
e classmethod
in Python puro, se volessi?I decoratori staticmethod e classmethod possono essere implementati in puro Python?
Per staticmethod
forse potrei mantenere un riferimento alla funzione originale e chiamarlo omettendo il primo argomento?
Per classmethod
forse potrei mantenere un riferimento alla funzione originale e chiamarlo passando il tipo del primo argomento, piuttosto che l'argomento stesso? (Come dovrei gestirlo chiamando direttamente sulla classe?)
Ancora, non è che io voglia effettivamente implementarlo nei miei programmi; Voglio imparare come funziona la lingua. Se è possibile farlo, apprezzerei molto i campioni di codice. In caso contrario, apprezzerei le spiegazioni perché non può essere fatto teoricamente. Grazie!
Modifica: Grazie per la risposta e per il riferimento al protocollo descrittore! Come mezzo per estendere ulteriormente la mia comprensione di Python mi piacerebbe fare altre due cose:
Questo potrebbe essere fatto senza il protocollo descrittore, ad esempio implementando la chiamata __ __ metodo speciale nelle nostre classi?
Il protocollo descrittore funziona allo stesso modo in Python 2.7 e in Python 3.x?
Grazie ancora!
Ho intenzione di accettare questa risposta, in quanto è una buona e completa risposta alla mia domanda iniziale. Tuttavia, lo apprezzerò molto se risponderai anche alla mia modifica! Grazie! – Tom