Zunächst einmal verstehe ich, wie im Allgemeinen ein Dekorateur arbeiten. Und ich weiß, @staticmethod
Streifen aus dem Beispiel Argumente in der Signatur, so dassKann jemand erklären, wie der Quellcode von staticmethod in Python funktioniert
class C(object):
@staticmethod
def foo():
print 'foo'
C.foo //<function foo at 0x10efd4050>
C().foo //<function foo at 0x10efd4050>
gültig.
Allerdings verstehe ich nicht, wie der Quellcode von staticmethod
dies möglich machen.
Es scheint mir, dass, wenn Methode Einwickeln foo
in staticmethod
, eine Instanz von staticmethod
instanziert wird, dann einige Magie geschieht, C.foo()
legit zu machen.
Also .. was passiert in diesen magie? Was hat staticmethod
tun?
Ich bin mir der enormen Themen auf SO bezüglich staticmethods
bewusst, aber keine von ihnen adressiert meine Zweifel. Aber vielleicht habe ich das magische Schlüsselwort nicht getroffen. Wenn ja, lass es mich bitte wissen.
Denn wer für staticmethod
Quellcode suchen, finden Sie in https://hg.python.org/cpython/file/c6880edaf6f3/Objects/funcobject.c
Ich habe den Quellcode von PyCharm IDE .. was ich habe keine Ahnung, ob es die echte Kopie ist ..Oops – user2829759
@ user2829759: PyCharm kann nicht auf den eigentlichen Quellcode zugreifen (wie es kompiliert C-Code ist) so rekonstruiert ein Shim für Sie von der Inspektion des Objekts. –
@martijinpieters Gibt es an, was im C-Code passiert? – user2829759