Курс Python → Переопределение унарных операторов

Унарные операторы в Python позволяют переопределить стандартное поведение операторов для объектов пользовательских классов. В данном примере мы рассмотрим класс Number, в котором определен метод neg(self), который переопределяет унарный оператор отрицания (-) для объектов этого класса. Когда мы используем оператор отрицания для объекта num, Python автоматически вызывает метод neg для этого объекта.

Метод neg возвращает новый объект Number с отрицательным значением атрибута value. Это позволяет нам создавать объекты, которые могут поддерживать математические операции с помощью перегрузки операторов в Python. Переопределение метода neg дает нам возможность определить поведение объекта при использовании унарного оператора отрицания.

Пример кода:


class Number:
    def __init__(self, value):
        self.value = value
        
    def __neg__(self):
        return Number(-self.value)

num = Number(5)
neg_num = -num

print(neg_num.value)  # Выведет -5

В данном примере мы создаем объект num класса Number с атрибутом value равным 5. Затем мы используем унарный оператор отрицания для объекта num, что вызывает метод __neg__, который создает новый объект Number с отрицательным значением value. В результате мы получаем объект neg_num с атрибутом value равным -5.

Переопределение унарного оператора отрицания позволяет нам более гибко управлять поведением объектов в Python и использовать их в математических операциях. Этот подход особенно полезен при работе с числами или другими данными, где унарный оператор отрицания имеет смысл.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Группы исключений в Python
  2. Анонимные функции в Python
  3. Метод is_absolute() для PurePath
  4. Python: цикл for и оператор присваивания
  5. Возврат значений из генератора
  6. Работа с YAML в Python: PyYAML.
  7. Уникальность ключей в словаре
  8. Управление контекстом выполнения кода
  9. Python Поверхностное Копирование
  10. Аргументы *args и **kwargs
  11. Комментарии в Python
  12. Работа с Telegram API на Python
  13. Retrying в Python: повторные вызовы
  14. Списковое включение в Python
  15. Создание словарей с defaultdict()
  16. Разделение строки с помощью split()
  17. Создание таблиц в терминале с PrettyTable
  18. Python 3.12: переиспользование кавычек
  19. Инверсия списков и строк в Python
  20. Инверсия списка и строки в Python
  21. Отладка регулярных выражений в Python
  22. Функция с *args.
  23. Генераторы списков
  24. Лямбда-функции для min/max
  25. Метод matmul для умножения матриц
  26. Функции классификации комплексных чисел
  27. ChainMap избыточные ключи
  28. Метод count() для списка
  29. Возвращение нескольких значений
  30. Работа со словарями
  31. Оператор деления для класса Rational
  32. Функции any() и all() в Python
  33. Функция reduce() из модуля functools
  34. Метод __index__ в Python
  35. Создание .exe файла с pyinstaller
  36. Преобразование букв в нижний регистр
  37. Отображение графиков в Jupyter с Matplotlib
  38. Хранение переменных в словаре.
  39. Сортировка с параметром key
  40. Поиск подстроки в строке
  41. Создание веб-приложения с Flask
  42. Официальный канал Python в Telegram
  43. Копирование объектов в Python
  44. Игра Виселица на Python
  45. Взаимодействие с внешними процессами в Python
  46. Оценка точности модели
  47. Удаление знаков препинания в Python

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