Prima di tutto, capisco come, in generale, un decoratore funzioni. E so @staticmethod
toglie l'argomento istanza nella firma, rendendoQualcuno può spiegare come funziona il codice sorgente di staticmethod in python
class C(object):
@staticmethod
def foo():
print 'foo'
C.foo //<function foo at 0x10efd4050>
C().foo //<function foo at 0x10efd4050>
valido.
Tuttavia, non capisco come il codice sourcec di staticmethod
accada ciò.
Mi sembra che quando avvolgendo metodo foo
in staticmethod
, un'istanza di staticmethod
viene istanziato, quindi qualche magia accade, rendendo C.foo()
legit.
Quindi .. cosa succede in quelle magia? che cosa ha fatto staticmethod
?
Sono a conoscenza degli enormi argomenti su SO per quanto riguarda lo staticmethods
ma nessuno di loro risolve i miei dubbi. Ma forse non ho colpito la parola chiave magica. Se è così, per favore, fammi sapere.
Per chi cerca staticmethod
codice sorgente, si rimanda alla https://hg.python.org/cpython/file/c6880edaf6f3/Objects/funcobject.c
Ho ottenuto il codice sorgente da PyCharm IDE .. che non ho idea se si tratti della copia reale ... – user2829759
@ user2829759: PyCharm non può accedere al codice sorgente effettivo (dato che è codice C compilato) in modo che ricostruisce uno spessore per te dall'introspezione dell'oggetto. –
@martijinpieters Riflette cosa sta succedendo nel codice C? – user2829759