Python: специальные методы ООП
Специальных методов слишком много, но вот небольшой их список.
Метод |
Описание |
__call__(self[, args...]) |
Вызов экземпляра класса как функции |
__next__(self) |
|
__add__(self, other) |
Сложение (x + y). Будет вызвано: x.__add__(y) |
__iadd__(self, other) |
Сложение с присваиванием |
__sub__(self, other) |
Вычитание (x - y) |
__isub__(self, other) |
Вычитание с присваиванием |
__mul__(self, other) |
Умножение (x * y) |
__rmul__(self, other) |
Умножение (y * x) |
__imul__(self, other) |
Умножение с присваиванием |
__truediv__(self, other) |
Деление (x / y) |
__floordiv__(self, other) |
Целочисленное деление (x // y) |
__mod__(self, other) |
Остаток от деления (x % y) |
__divmod__(self, other) |
Частное и остаток (divmod(x, y)) |
__radd__(self, other) |
Сложение (y + x). Будет вызвано: y.__radd__(x) |
__rsub__(self, other) |
Вычитание (y - x) |
__lt__(self, other) |
Сравнение (x < y). Будет вызвано: x.__lt__(y) |
__eq__(self, other) |
Сравнение (x == y). Будет вызвано: x.__eq__(y) |
__len__(self) |
Возвращение длины объекта |
__getitem__(self, key) |
Доступ по индексу (или ключу) |
__cmp__(self, other) |
Самый базовый из методов сравнения. Он определяет поведение для всех операторов сравнения (>, ==, !=, итд.) |
__eq__(self, other) |
Определяет поведение оператора равенства, == |
__ne__(self, other) |
Определяет поведение оператора неравенства, != |
__lt__(self, other) |
Определяет поведение оператора меньше, < |
__gt__(self, other) |
Определяет поведение оператора больше, > |
__le__(self, other) |
Определяет поведение оператора меньше или равно, <= |
__ge__(self, other) |
Определяет поведение оператора больше или равно, >= |
__str__(self) |
Определяет поведение функции str(), вызванной для экземпляра вашего класса |
__repr__(self) |
Определяет поведение функции repr(), вызыванной для экземпляра вашего класса. Главное отличие от str() в целевой аудитории. repr() больше предназначен для машинно-ориентированного вывода. |
Полную документацию по специальным методам легко можно найти в Интернете. Вот пара ссылок на них:
- https://habrahabr.ru/post/186608/ - Очень подробная статья с длинным и обстоятельным описанием.
- https://docs.python.org/3/reference/datamodel.html#special-method-names - официальная документация на сайте docs.python.org.