Курс 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. Создание и инициализация объектов
  3. Область видимости переменных в Python
  4. Метод repr() в Python
  5. Оператор match в Python
  6. Рекурсия для обращения строки
  7. Замена переменных в Python
  8. Python Поверхностное Копирование
  9. Изменение логики работы с временем
  10. Работа с контекстным менеджером Pool
  11. Отладка утечек памяти в Python
  12. Построение графиков в Matplotlib
  13. Создание .exe файла с pyinstaller
  14. Замена текста с re.sub()
  15. Копирование в Python
  16. Обработка ошибки IndexError
  17. JSON-esque в Python
  18. Расширение информации об ошибке в Python
  19. Функции min(), max(), sum()
  20. Декоратор защиты анонимных пользователей
  21. Удаление элемента по индексу
  22. Mad Libs Generator
  23. Присвоение значений переменным в Python
  24. Работа с YAML в Python: PyYAML.
  25. Отрицательные индексы списков в Python
  26. Получение текущего времени в Python
  27. Поиск наиболее частого элемента в списке
  28. Списковый компрехеншен.
  29. Перевернуть список в Python
  30. Синхронизация доступа к ресурсам
  31. Управление контекстом выполнения
  32. Добавление Progressbar в Python
  33. Методы split() и join() — Python строк.
  34. Метод enumerate() в Python
  35. Профилирование с cProfile
  36. Сокращение ссылок с pyshorteners
  37. Изменения в обработке логических значений
  38. Работа с библиотекой requests
  39. Комментарии в Python
  40. Ограничение итераций в Python
  41. Работа со строками в Python
  42. Создание функций высшего порядка
  43. Асинхронное программирование с asyncio
  44. Настройка вывода NumPy

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