Курс Python → Оператор деления для класса Rational

Класс Rational представляет собой рациональное число, которое состоит из числителя и знаменателя. Для того чтобы реализовать оператор деления / для объектов этого класса, необходимо переопределить метод truediv. Этот метод принимает два аргумента: self — объект, для которого вызывается метод, и other — объект, с которым производится операция деления.

Внутри метода truediv происходит проверка типа операнда other. Если other также является объектом класса Rational, то выполняется деление двух дробей. Для этого числитель первой дроби умножается на знаменатель второй, а знаменатель первой дроби умножается на числитель второй. Таким образом, мы получаем результат деления двух рациональных чисел.

def truediv(self, other):
    if isinstance(other, Rational):
        numerator = self.numerator * other.denominator
        denominator = self.denominator * other.numerator
        return Rational(numerator, denominator)
    elif isinstance(other, (int, float)):
        denominator = self.denominator * other
        return Rational(self.numerator, denominator)
    else:
        raise TypeError("Unsupported operand type for division")

Если операнд other не является ни объектом класса Rational, ни числом, то метод truediv вызывает исключение TypeError. Это позволяет обработать ситуацию, когда пытаемся выполнить операцию деления с неподдерживаемым типом данных.

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

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

Автор урока

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

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

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

  1. Декораторы в Python
  2. Работа со временем в Python
  3. Присвоение и ссылки
  4. Основы работы с базами данных в Python
  5. Переопределение метода __lshift__
  6. Приоритет операций в Python
  7. Модуль functools в Python
  8. Работа со слайсами
  9. Рекурсия для обращения строки
  10. Оператор «or» в Python
  11. Функция count() в Python
  12. Управление мышью и клавиатурой с Pyautogui
  13. Создание копии списка в Python
  14. Модуль math: константы π и e
  15. Измерение времени выполнения кода
  16. Декораторы в Python
  17. Декораторы в Python
  18. Метод count() для списка
  19. Профилирование кода на Python
  20. Анализ кода — Python
  21. Поиск индексов подстроки
  22. Обработка ошибок в Python
  23. Распаковка элементов последовательности
  24. Функция reversed() в Python
  25. Установка и использование библиотеки google
  26. Объединение словарей в Python
  27. Обрезка изображения с Pillow
  28. Работа с итераторами в Python
  29. HTTP-запросы с библиотекой Requests
  30. Распаковка аргументов в Python
  31. Открытие, чтение и закрытие файла
  32. Возврат нескольких значений
  33. Функция zip() для объединения списков
  34. ChainMap.new_child() — добавление нового словаря
  35. Получение текущей директории
  36. Генераторы в Python
  37. Работа с кортежами
  38. Объединение словарей в Python
  39. Создание коллекций из генератора
  40. Работа с типами данных в Python с помощью pydantic.
  41. Цикл for в Python
  42. Python union() функция — объединение множеств
  43. Работа с Requests для HTTP-запросов
  44. Форматирование вывода с F-строками
  45. Поиск самого частого элемента
  46. Работа с argparse

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