Представляет указанную функцию методом класса.
classmethod(function)
-> Метода класса
function -- Функция, которую следует представить методом класса.

+py2.4 Может использоваться к качестве декоратора.

На заметку
Методы класса реализованы при помощи дескрипторов.

В метод класса первым аргументом неявным образом передаётся класс (аналогично метод экземпляра получает в первом аргументе сам экземпляр).

Для удобного объявления метода класса используйте classmethod в виде декоратора:

    class MyClass:

@classmethod
def method(cls, arg):
print('%s classmethod. %d' % (cls.__name__, arg))

@classmethod
def call_original_method(cls):
cls.method(5)

def call_class_method(self):
self.method(10)


class MySubclass(MyClass):

@classmethod
def call_original_method(cls):
cls.method(6)


# Вызываем методы класса через класс.
MyClass.method(0) # MyClass classmethod. 0
MyClass.call_original_method() # MyClass classmethod. 5

MySubclass.method(0) # MySubclass classmethod. 0
MySubclass.call_original_method() # MySubclass classmethod. 6

# Вызываем методы класса через объект.
my_obj = MyClass()
my_obj.method(1) # MyClass classmethod. 1
my_obj.call_class_method() # MyClass classmethod. 10

Из примеров выше видно, что метод может вызываться как через класс — MyClass.method() —, так и через экземпляр — MyClass().method(). При вызове метода из наследника в первом аргументе метод получит класс этого самого наследника.

Внимание
Методы класса не являются аналогом статических методов из C++ или Java. Если нужен аналог, используйте staticmethod().
Синонимы поиска: classmethod, метод класса
На заметку
Зарегистрированные пользователи могут добавлять Книги.