Курс 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. Генераторные выражения и islice.
  2. Преобразование текста в нижний регистр
  3. Метаклассы в Python
  4. Транспонирование 2D-массива с помощью zip
  5. JMESPath в Python
  6. Создание итератора
  7. Структурирование данных с Pydantic
  8. Парсинг статей с Newspaper3k
  9. Преобразование числа в список цифр
  10. Возврат нескольких значений
  11. Работа с путями в Python
  12. lru_cache оптимизация функций
  13. Создание пользовательской коллекции в Python
  14. Тестирование модели в PyTorch
  15. Генерация тестовых данных с factory_boy
  16. Переопределение метода __rshift__
  17. Ветвление выражения в Python
  18. Аргументы *args и **kwargs
  19. Печать месячного календаря
  20. Основы Python за 14 дней
  21. Работа с кортежами в Python
  22. Работа с CSV файлами в Python
  23. Отправка POST запроса на сервер.
  24. Обход элементов в Python
  25. Передача словаря через **kwargs
  26. Функции высшего порядка в Python
  27. Разбиение строки в Python
  28. Python: динамическая типизация и проверка типов
  29. Операции с комплексными числами
  30. Обязательные аргументы в Python
  31. Операции с массивами в NumPy
  32. Основы работы с базами данных в Python
  33. Удаление элемента из списка
  34. Оператор += для объединения строк
  35. Сглаживание списка
  36. Разделение строки с помощью re.split()
  37. Печать календаря
  38. Использование *args
  39. Отрицательные индексы списков
  40. Проверка памяти объекта
  41. Форматирование заголовков в Python
  42. Функция format() в Python
  43. Оператор in для Python
  44. Область видимости переменных
  45. Big O оптимизация
  46. Генераторы в Python

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