Курс 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. Присоединение элементов коллекции
  2. Форматирование строк в Python
  3. Поиск наиболее частого элемента в списке
  4. Принципы LSP и ISP в Python
  5. Функции в одну строку
  6. Операции с числами в Python
  7. Создание новых функций через partial
  8. Генераторы словарей и множеств
  9. Взаимодействие с sys
  10. Циклы в Python
  11. Проблемы с именами переменных
  12. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  13. Проверка типа объекта в Python
  14. Цикл for в Python
  15. Работа с кортежами в Python
  16. Метод count в Python: почему count(», ») возвращает 4?
  17. Анонимные функции Lambda
  18. Оператор == в Python
  19. Работа с множествами в Python
  20. Создание уникального множества
  21. Генераторы в Python
  22. Списки в Python: основы
  23. Многопроцессорное программирование в Python
  24. Инверсия списка/строки в Python
  25. Склеивание строк через метод join()
  26. Использование *args
  27. Секреты Python
  28. Создание словаря в Python
  29. Работа с модулем Calendar
  30. Разбиение строки в Python
  31. Создание коллекций из выражения-генератора
  32. Обновление шаблона base.html
  33. Назначение максимального и минимального значения переменной в Python.
  34. Логические значения в Python
  35. Возврат нескольких значений из функции
  36. Импорт модулей в Python 3.12
  37. Метод count() для списка
  38. Работа с базами данных SQLite
  39. Импорт модулей в Python 3.12
  40. Оптимизация памяти с помощью __slots__
  41. Метод repr() в Python
  42. Сравнение строк в Python
  43. Метод сравнения объектов в Python

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