Курс 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. Основные операции с Numpy
  2. Глобальные переменные в Python
  3. Декораторы в Python
  4. Разработка игры Pong с turtle
  5. Декораторы в Python
  6. globals и locals
  7. Генерация фальшивых данных с Faker
  8. Работа с itertools
  9. Поиск частого элемента
  10. Избегайте двойного подчеркивания
  11. Конкатенация строк с join() в Python
  12. Использование type hints
  13. Просмотр внешних файлов в %pycat
  14. Работа с пользовательским вводом
  15. Синхронизация доступа к ресурсам
  16. Модуль antigravity: генерация координат
  17. Сортировка и разворот списка
  18. Переопределение метода __lshift__
  19. Многоточие в Python
  20. Работа с срезами в Numpy
  21. Метод join() для объединения элементов
  22. Вычисление времени выполнения
  23. Python reversed() функция
  24. Переопределение метода __eq__
  25. Повторение и перенос строки
  26. Лямбда-функции в defaultdict
  27. Строковое представление объектов
  28. Модуль sys: основы
  29. Объединение кортежей в Python
  30. Руководство по Pymorphy2
  31. Профилирование с Pandas
  32. Установка и обучение ChatterBot
  33. Функции all() и any() в Python
  34. Создание графиков в терминале
  35. Сортировка с параметром key
  36. Преобразование строк в числа с плавающей запятой
  37. Создание виртуальной среды
  38. Python enumerate() использование
  39. Списковый компрехеншен.
  40. Принцип одной функции
  41. Замена подстроки
  42. Обновление и получение данных в SQLite
  43. Обновление данных через PUT запрос
  44. Использование подчеркивания в REPL
  45. Обратный список чисел
  46. Группы исключений в Python
  47. Расширение информации об ошибке в Python

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