Найти тему
Future People

Использование декоратора classmethod для методов класса в Python

Оглавление

Декоратор 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.

Тестируем

-2

В этом примере создаются три объекта класса Payments с разными суммами платежей. После создания каждого объекта значение payments_count увеличивается. Метод info, вызванный через класс Payments, выводит общее количество созданных платежей.

Вывод

Декоратор classmethod позволяет создавать методы, которые оперируют атрибутами и данными класса, а не отдельными экземплярами. Это особенно полезно, когда необходимо хранить и обрабатывать информацию, общую для всех объектов класса, такую как общее количество платежей в данном примере. Использование методов класса упрощает доступ к атрибутам класса и делает код более организованным и понятным.

Для злобных комментаторов: это абстрактный пример. В реальном проекте мы никогда не будем так высчитывать количество платежей 😁

Если вы интересуетесь программированием, то напоминаю о нашем курсе по основам программирования Python [START].

В нем много анимации, примеров и разборов домашних заданий. Присоединяйтесь! Ссылка:

Python START: курс для начинающих