Курс 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. Создание Radio кнопок в tkinter
  3. Поиск частого элемента
  4. Применение функции map() с лямбда-функциями
  5. Изменение логики работы с временем
  6. Декодирование байтов в строку
  7. Работа с NumPy массивами
  8. Исключение NotImplementedError
  9. Работа с датой и временем в Python
  10. Удаление дубликатов из списка с помощью dict.fromkeys
  11. Функция product() из itertools
  12. Переопределение унарных операторов
  13. Работа со словарями
  14. Работа с модулем Calendar
  15. Равенство и идентичность в Python
  16. Изменения в обработке логических значений
  17. Нахождение хеша для бесконечности и NaN в Python
  18. Группы исключений в Python
  19. Оптимизация памяти с __slots__
  20. Dict Comprehension в Python
  21. Разделение строки с помощью re.split()
  22. Многострочные строки в Python
  23. Просмотр атрибутов и методов класса
  24. Работа с базами данных SQLite
  25. Особенности запятых в Python
  26. Python UserString — создание подклассов строк
  27. Удаление элементов из списка в Python.
  28. Подсчет элементов с помощью Counter из collections
  29. Работа с collections в Python
  30. Форматирование чисел в Python
  31. Работа с итераторами в Python
  32. Логические операторы в Python
  33. split() без разделителя
  34. Работа с WindowsPath()
  35. Измерение времени выполнения с помощью time
  36. Разделение строки в Python
  37. Работа с датой и временем в Python
  38. Работа с NumPy
  39. Получение значений из словарей
  40. Цикл for в Python
  41. Работа с комбинациями в Python.
  42. Метод join() для объединения элементов строки
  43. Списковое включение в Python
  44. Преобразование данных в Python

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