25

Основные магические методы в python⁠⁠

Пора в python изучить magic и создать классы с магическими методами. С вводной частью вы можете ознакомиться ЗДЕСЬ.

В прошлом посте мы разобрались с методами __new__ и __init__.

Далее разберемся с методом __del__.

__del__ - метод, который срабатывает при удалении объекта.

Когда мы вызываем удаление man_1, то нам выводится на экран сообщение и имя человека удаляется, если мы попробуем, после удаление, вывести имя в консоль, то получим ошибку.

Также есть базовые методы, такие как ==, !=, >= и т.д.

__eq__(self, other) - Определяет поведение оператора равенства, ==.
__ne__(self, other) - Определяет поведение оператора неравенства, !=.
__lt__(self, other) - Определяет поведение оператора меньше, <.
__gt__(self, other) - Определяет поведение оператора больше, >.
__le__(self, other) - Определяет поведение оператора меньше или равно, <=.
__ge__(self, other) - Определяет поведение оператора больше или равно, >=.

Напишем класс Number, который будет принимать число и напишем два метода __eq__ и __gt__ для сравнения.

В Python есть унарные операторы.

__pos__(self) - Определяет поведение для унарного плюса (+some_object)
__neg__(self) - Определяет поведение для отрицания(-some_object)
__abs__(self) - Определяет поведение для встроенной функции abs().
__invert__(self) - Определяет поведение для инвертирования оператором ~. Для объяснения что он делает смотри статью в Википедии о бинарных операторах.
__round__(self, n) - Определяет поведение для встроенной функции round(). n это число знаков после запятой, до которого округлить.
__floor__(self) - Определяет поведение для math.floor(), то есть, округления до ближайшего меньшего целого.
__ceil__(self) - Определяет поведение для math.ceil(), то есть, округления до ближайшего большего целого.
__trunc__(self) - Определяет поведение для math.trunc(), то есть, обрезания до целого.

Также есть обычные арифметические операторы, +, - ит

__add__(self, other) - Сложение.
__sub__(self, other) - Вычитание.
__mul__(self, other) - Умножение.
__floordiv__(self, other) - Целочисленное деление, оператор //.
__div__(self, other) - Деление, оператор /.
__truediv__(self, other) - Правильное деление. Заметьте, что это работает только когда используется from __future__ import division.
__mod__(self, other) - Остаток от деления, оператор %.
__divmod__(self, other) - Определяет поведение для встроенной функции divmod().
__pow__ - Возведение в степень, оператор **.
__lshift__(self, other) - Двоичный сдвиг влево, оператор <<.
__rshift__(self, other) - Двоичный сдвиг вправо, оператор >>.
__and__(self, other) - Двоичное И, оператор &.
__or__(self, other) - Двоичное ИЛИ, оператор |.
__xor__(self, other) - Двоичный xor, оператор ^.

Операторы сложение, вычитание и деление будут выглядеть примерно так:

Есть также деление, умножение, сложение и т.д. с присваиванием.

__iadd__(self, other) - Сложение с присваиванием.
__isub__(self, other) - Вычитание с присваиванием.
__imul__(self, other) - Умножение с присваиванием.
__ifloordiv__(self, other) - Целочисленное деление с присваиванием, оператор //=.
__idiv__(self, other) - Деление с присваиванием, оператор /=.
__itruediv__(self, other) - Правильное деление с присваиванием. Заметьте, что работает только если используется from __future__ import division.
__imod_(self, other) - Остаток от деления с присваиванием, оператор %=.
__ipow__ - Возведение в степерь с присваиванием, оператор **=.
__ilshift__(self, other) - Двоичный сдвиг влево с присваиванием, оператор <<=.
__irshift__(self, other) - Двоичный сдвиг вправо с присваиванием, оператор >>=.
__iand__(self, other) - Двоичное И с присваиванием, оператор &=.
__ior__(self, other) - Двоичное ИЛИ с присваиванием, оператор |=.
__ixor__(self, other) - Двоичный xor с присваиванием, оператор ^=.

Можно написать класс Point, принимающий имя точки, координаты по x  и y, и  при обращение к нему выводит информацию о себе, также пару методов, которые показывали бы координаты точек.

Весь код, написанный с вами будет ЗДЕСЬ.

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

0
Автор поста оценил этот комментарий
Отучился недавно на онлайн курсе.
В бекграунде веб-стек, чуть меньше 10 лет.
Сертификат с отличием.
Но не вкатил мне питон...
раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества