Курс 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. Удаление элемента по индексу
  2. Переопределение метода __or__()
  3. Функции map, filter, reduce
  4. Применение команды break
  5. Просмотр внешних файлов в %pycat
  6. Обход словаря в Python
  7. Перемещение и удаление файлов в Python
  8. Создание вложенных циклов for
  9. Хранение переменных в Python.
  10. Работа с Enum в Python3.
  11. Обновление шаблона base.html
  12. Конкатенация строк в Python
  13. Функции all и any в Python
  14. Обязательные аргументы в Python
  15. Обход элементов в Python
  16. Retrying в Python: повторные вызовы
  17. Оператор морж в Python 3.8
  18. Декораторы в Python
  19. Получение идентификатора объекта в памяти
  20. Разбиение текста в Python
  21. Применение функции к каждому элементу списка
  22. Присвоение значений переменным в Python
  23. Оператор умножения для вектора
  24. Настройка вывода NumPy
  25. Работа с модулем glob в Python
  26. Инверсия списков и строк в Python
  27. Сохранение Unicode в JSON
  28. Метод сравнения объектов в Python
  29. Удаление дубликатов с помощью множеств
  30. Сортировка данных в Python
  31. Преобразование символов в нижний регистр
  32. Сравнение объектов в Python
  33. Удаление файлов и папок в Python
  34. Значения по умолчанию в Python
  35. Управление IP-адресами через прокси
  36. Аннотации типов в Python
  37. Запуск асинхронной корутины
  38. Работа со словарями с defaultdict из collections
  39. Переворот строки с использованием цикла
  40. Ограничение ресурсов в Python
  41. Типы возвращаемых значений в Python
  42. Присвоение и ссылки
  43. Работа с Telegram API на Python
  44. Шаблоны Flask: условия и циклы
  45. Измерение времени выполнения в Python
  46. f-строки в формате строк
  47. Разработка Telegram-ботов

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