logo

@classmethod

Представляет функцию function методом класса. В метод класса первым аргументом неявным образом передаётся класс. Аналогично метод экземпляра получает в первом аргументе сам экземпляр.

Параметры

Функция @classmethod принимает один параметр:

  • function — функция, которую необходимо преобразовать в метод класса.

Возвращаемое значение

Функция @classmethod возвращает метод класса для данной функции.

Примеры

Для удобного объявления метода класса используйте @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(). При вызове метода из наследника в первом аргументе метод получит класс наследника.

Python с нуля. Освойте с Виртуальным ИИ-помощником!

  • Теоретические уроки и практические задачи
  • Пишите и проверяйте код прямо в браузере
  • Виртуальный ИИ-помощник поможет в любое время дня и ночи
  • Сообщество учеников для взаимопомощи и обмена опытом
  • 200 000+ зарегистрированных участников. Присоединяйтесь!