Декоратор метода класса
Часть раздела Объектно-ориентированное программирование путешествия по Python на Coddy. Урок 12 из 64.
Декоратор @classmethod создаёт методы, которые получают сам класс в качестве первого параметра (cls) вместо экземпляра (self).
Вот пример класса с методами класса:
class Student:
school_name = "Python Academy"
student_count = 0
def __init__(self, name):
self.name = name
Student.student_count += 1
@classmethod
def get_school_info(cls):
return f"School: {cls.school_name}, Students: {cls.student_count}"
@classmethod
def create_guest_student(cls):
return cls("Guest")Вызывай методы класса, используя имя класса:
info = Student.get_school_info()
print(info)Создайте нескольких учеников:
alice = Student("Alice")
bob = Student("Bob")
updated_info = Student.get_school_info()
print(updated_info)Используй методы класса в качестве альтернативных конструкторов:
guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())Результат:
School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3Методы класса также можно вызывать из экземпляров:
alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)Вывод:
School: Python Academy, Students: 1Ключевой момент: используй @classmethod, когда нужно получить доступ к атрибутам класса или создать альтернативные способы создания объектов. Первый параметр — cls (сам класс), а не self.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Введение в ООПВнешние файлыКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — простой калькулятор4Наследование
Основы наследованияФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовПовторение: иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»2Декораторы
Введение в декораторыДекоратор свойстваДекоратор статического методаДекоратор метода класса5Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур8Продвинутые концепции ООП
Композиция и наследованиеМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыПовторение — менеджер банковского счёта6Инкапсуляция
Публичные, защищённые и приватные членыМодификаторы доступаСокрытие информацииПродвинутые декораторы свойствПовторение — система учёта студентов12Проект: Система управления библиотекой
Обзор проектаКлассы книг и пользователейСистема выдачи книгФункция поискаИнтерфейс администратораТестирование и интеграцияПотренируйтесь самостоятельно: Онлайн-компилятор Python