Курс Python → Переопределение метода __floordiv__

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

Для того чтобы переопределить метод __floordiv__, необходимо в классе определить этот метод. Например, если у нас есть класс ComplexNumber и мы хотим добавить поддержку целочисленного деления для объектов этого класса, мы можем определить метод __floordiv__ следующим образом:


class ComplexNumber:
    def __init__(self, real, imag):
        self.real = real
        self.imag = imag
        
    def __floordiv__(self, other):
        if isinstance(other, ComplexNumber):
            return ComplexNumber(self.real // other.real, self.imag // other.imag)
        else:
            return ComplexNumber(self.real // other, self.imag // other)

Теперь объекты класса ComplexNumber могут использовать операцию целочисленного деления. Например:


num1 = ComplexNumber(10, 5)
num2 = ComplexNumber(3, 2)

result = num1 // num2
print(result.real, result.imag)  # Output: 3 2

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Создание виртуальной среды
  2. Многострочные комментарии в Python
  3. Создание пользовательской коллекции в Python
  4. Метод join() для объединения строк
  5. Библиотека Rich: форматирование текста
  6. Метод enumerate() в Python
  7. Обход элементов в Python
  8. Измерение времени выполнения кода
  9. Оператор assert в Python
  10. Создание копии итератора
  11. Оператор (*) в Python
  12. Магические методы в Python
  13. Создание тестовых данных с Faker
  14. Методы в Python
  15. Запуск внешних программ с subprocess
  16. Namedtuple в Python
  17. Транспонирование 2D-массива с помощью zip
  18. Метод count в Python: почему count(», ») возвращает 4?
  19. Функции в Python
  20. Фильтрация списка чисел
  21. Протокол управления контекстом
  22. Сортировка в Python
  23. Преобразование регистра символов
  24. Переопределение метода divmod
  25. Сравнение def и lambda функций в Python
  26. Искажение имен в Python
  27. Объединение Python и Shell
  28. Функции в одну строку
  29. Метод is_absolute() для PurePath
  30. Операции с кортежами
  31. Переопределение метода __or__()
  32. Передача аргументов через **arguments
  33. Метод pos в Python
  34. Изменение списка срезом
  35. Объединение списков с помощью zip
  36. Создание и использование ChainMap
  37. Работа с файлами и директориями в Python.
  38. Измерение времени выполнения кода с помощью time
  39. Работа с кортежами
  40. Объединение строк с помощью метода join
  41. Метод join() для объединения элементов строки
  42. Измерение потребления памяти при сортировке
  43. Функции с необязательными аргументами
  44. Работа с deque в Python
  45. Логирование с Loguru
  46. Генератор данных в Keras
  47. Разработка Telegram-ботов

Marketello читают маркетологи из крутых компаний