Пропустить до содержимого

Как использовать Python без усилий?

[

Оператор и перегрузка функций в пользовательских классах Python

Многие, кто использовал оператор + или умножение на * со строковыми объектами в Python, будут знать, что их поведение отличается от поведения операторов с числами типа int или float:

>>> # Складывает два числа
>>> 1 + 2
3
>>> # Сцепляет две строки
>>> 'Real' + 'Python'
'RealPython'
>>> # Даёт произведение
>>> 3 * 2
6
>>> # Повторяет строку
>>> 'Python' * 3
'PythonPythonPython'

Возможно, вы задались вопросом, почему один и тот же встроенный оператор или функция ведут себя по-разному для объектов разных классов. Это называется перегрузкой операторов или функций соответственно. В этой статье я расскажу вам о механизме этой перегрузки, чтобы вы могли применить её в собственных классах Python и сделать ваши объекты более питоническими.

Вы узнаете следующее:

  • API, который обрабатывает операторы и встроенные функции в Python
  • ”Секрет” работы len() и других встроенных функций
  • Как сделать ваши классы способными использовать операторы
  • Как сделать ваши классы совместимыми с встроенными функциями Python

Кроме того, вы увидите пример класса, объекты которого будут совместимы с многими из этих операторов и функций. Итак, приступим!

Python Data Model

Предположим, у вас есть класс, представляющий онлайн-заказ с корзиной (списком) и покупателем (строкой или экземпляром другого класса, представляющего покупателя).

В другом случае мы можем захотеть добавить что-нибудь в корзину. Вновь начинающий Python-разработчик может подумать о реализации метода append_to_cart(), который принимает товар и добавляет его в список корзины. Но вы можете настроить оператор + таким образом, чтобы он добавлял новый товар в корзину.

Содержание

  • Введение
  • Что такое перегрузка операторов и функций
  • Пример перегрузки операторов и функций
    • Добавение операторов к пользовательским классам
    • Работа со встроенными функциями
    • Полный пример
  • Заключение

Для указанных в статье конкретных методов, включите точные примеры кода и подробные объяснения для создания учебного материала по Python.