Подтвердить что ты не робот

Как методы, `classmethod` и` staticmethod` реализованы в Python?

В какой момент методы в Python приобретают свойство get? - Как только они определены в классе? Почему Python позволяет мне определять метод без каких-либо аргументов (даже не первый аргумент self)?

Я знаю, как использовать classmethod и staticmethod, и я знаю, что они встроенные функции, но что происходит с так называемой функцией?

По существу, мне интересно узнать о "магии", которая происходит между определением класса и конструкцией класса.

4b9b3361

Ответ 1

Проверьте это.

http://docs.python.org/howto/descriptor.html#static-methods-and-class-methods

Вы также можете посмотреть исходный код объектов класса и статического метода в funcobject.c:

http://hg.python.org/cpython/file/69b416cd1727/Objects/funcobject.c

Определение объекта метода класса начинается в строке 694, а определение объекта статического метода начинается в строке 852. (Мне кажется забавным, что у них есть объекты под названием "метод" в funcobject.c, когда methodobject.c также существует.)