Прежде всего, я понимаю, как работает декоратор. И я знаю, что @staticmethod
удаляет аргумент экземпляра в подписи, делая
class C(object):
@staticmethod
def foo():
print 'foo'
C.foo //<function foo at 0x10efd4050>
C().foo //<function foo at 0x10efd4050>
действует.
Однако я не понимаю, как это делает исходный код staticmethod
.
Мне кажется, что при методе упаковки foo
в staticmethod
создается экземпляр staticmethod
, затем происходит какая-то магия, делая C.foo()
legit.
Итак... что происходит в этой магии? что сделал staticmethod
?
Я знаю огромные темы о SO относительно staticmethods
, но ни один из них не касается моих сомнений. Но, возможно, я не попал в волшебное ключевое слово. Если да, пожалуйста, сообщите мне.
Для тех, кто ищет исходный код staticmethod
, обратитесь к https://hg.python.org/cpython/file/c6880edaf6f3/Objects/funcobject.c