Курс 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. Явный импорт переменных
  3. Шаблоны и наследование в Flask
  4. Декораторы в Python
  5. Управление фоновыми задачами в Python
  6. Разделение строки с регулярными выражениями
  7. Множественное назначение в Python
  8. Декоратор Ajax required
  9. Проблемы с именами переменных
  10. Распаковка элементов последовательности
  11. Создание класса очереди
  12. Удаление дубликатов из списка
  13. Преобразование данных в Python
  14. Проверка строки на палиндром
  15. Работа с WindowsPath()
  16. Генераторы в Python
  17. Python Менеджер контекста
  18. Частичное совпадение пользовательского ввода в Python 3.10
  19. Управление виртуальными окружениями в Python
  20. Работа с асинхронными задачами в Python
  21. Особенности запятых в Python
  22. Объединение словарей в Python
  23. Поиск индекса элемента в списке
  24. Возврат нескольких значений
  25. Возведение в квадрат с помощью itertools
  26. Переворот строки с использованием цикла
  27. Открытие, чтение и закрытие файла
  28. Измерение времени выполнения кода
  29. Функции map, filter и reduce
  30. Оператор «and» в Python
  31. Метод Self в Python
  32. Библиотека sh: удобные команды терминала
  33. Эффективная конкатенация строк в Python
  34. Фильтрация списков с itertools
  35. Создание генераторов в Python
  36. Работа с необработанными строками
  37. Расчет времени выполнения
  38. Создание и инициализация объектов
  39. Отладка утечек памяти в Python
  40. Нахождение хеша для бесконечности и NaN в Python
  41. Слияние словарей в Python 3.9
  42. Howdoi — получение ответов из терминала
  43. Нахождение разницы между списками в Python
  44. Переопределение метода delitem в Python

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