Декоратор classmethod позволяет определить метод, который работает с самим классом, а не его экземплярами. Это полезно, когда метод должен работать с данными, общими для всех экземпляров класса, такими как атрибуты класса.
Создадим класс Payments, который будет отвечать за учет количества платежей, и будем использовать декоратор classmethod для создания метода, выводящего количество всех платежей.
Создание класса Payments
Класс Payments будет представлять отдельные платежи. Мы будем отслеживать общее количество платежей с помощью атрибута класса payments_count.
Пояснение к коду
- Атрибут класса payments_count:
Инициализируется значением 0 и увеличивается каждый раз, когда создается новый объект Payments. - Метод __init__:Принимает параметр money и присваивает его значение атрибуту self.money.
Через self.__class__.payments_count обращается к атрибуту класса и увеличивает его на 1. - Метод класса info:Метод класса получает доступ к классу через параметр cls и выводит количество платежей, используя cls.payments_count.
Тестируем
В этом примере создаются три объекта класса Payments с разными суммами платежей. После создания каждого объекта значение payments_count увеличивается. Метод info, вызванный через класс Payments, выводит общее количество созданных платежей.
Вывод
Декоратор classmethod позволяет создавать методы, которые оперируют атрибутами и данными класса, а не отдельными экземплярами. Это особенно полезно, когда необходимо хранить и обрабатывать информацию, общую для всех объектов класса, такую как общее количество платежей в данном примере. Использование методов класса упрощает доступ к атрибутам класса и делает код более организованным и понятным.
Для злобных комментаторов: это абстрактный пример. В реальном проекте мы никогда не будем так высчитывать количество платежей 😁
Если вы интересуетесь программированием, то напоминаю о нашем курсе по основам программирования Python [START].
В нем много анимации, примеров и разборов домашних заданий. Присоединяйтесь! Ссылка: