Курс 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. Разработка Telegram-ботов
  3. Получение частей дроби
  4. Срезы в Numpy
  5. Конкатенация строковых литералов
  6. Работа со строками в Python
  7. Оптимизация методов в Python 3.7
  8. Тип данных TypeVarTuple
  9. Проекты на Python
  10. Сортировка данных с лямбда-функциями
  11. Namedtuple в Python
  12. Модуль pprint: улучшение вывода данных
  13. Комментарии в Python
  14. Использование метода lower()
  15. Работа с timedelta в Python
  16. Применение функции к списку
  17. Работа со временем в Python
  18. Создание директории в Python
  19. Работа с URL-адресами в Python
  20. Блок else в циклах Python
  21. Метод __complex__ в Python
  22. Howdoi — получение ответов из терминала
  23. Модуль Operator в Python
  24. Удаление элемента по индексу
  25. Использование модуля math
  26. Работа с модулем Calendar
  27. Возврат нескольких значений из функции
  28. Декораторы классов
  29. Загрузка постов Instagram
  30. Проектирование Singleton с метаклассом
  31. Итерация по итерируемым объектам
  32. Хранение переменных в Python.
  33. Хеширование паролей с солью
  34. Декоратор Ajax required
  35. Печать списка с помощью метода join
  36. Асинхронное выполнение задач в процессах
  37. Работа с NumPy массивами
  38. Сортировка с помощью параметра key
  39. Цикл for в Python
  40. Именованные кортежи в Python
  41. Названия переменных
  42. Python enumerate() для работы с индексами
  43. Выборка чисел
  44. Создание словарей и множеств в Python.

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