Прежде всего, я понимаю, как работает декоратор. И я знаю, что @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