Перевантаження операторів

Список таких "магічних" методів.

  • __new__ (cls [...]) - управляє створенням екземпляра. В якості обов'язкової аргументу приймає клас (не плутати з екземпляром). Повинен повертати екземпляр класу для його подальшої його передачі методу __init__.

  • __init__ (self [...]) - як уже було сказано вище, конструктор.

  • __del__ (self) - викликається при видаленні об'єкта складальником сміття.

  • __repr__ (self) - викликається вбудованою функцією repr; повертає "сирі" дані, що використовуються для внутрішнього представлення в python.

  • __str__ (self) - викликається функціями str, print і format. Повертає строкове представлення об'єкту.

  • __bytes__ (self) - викликається функцією bytes при перетворенні до байтам .

  • __format__ (self, format_spec) - використовується функцією format (а також методом format у рядків).

  • __lt__ (self, other) - x <y викликає x .__ lt __ (y).

  • __le__ (self, other) - x ≤ y викликає x .__ le __ (y).

  • __eq__ (self, other) - x == y викликає x .__ eq __ (y).

  • __ne__ (self, other) - x! = y викликає x .__ ne __ (y)

  • __gt__ (self, other) - x> y викликає x .__ gt __ (y).

  • __ge__ (self, other) - x ≥ y викликає x .__ ge __ (y).

  • __hash__ (self) - отримання хеш-суми об'єкта, наприклад, для додавання в словник.

  • __bool__ (self) - викликається при перевірці істинності. Якщо цей метод не визначений, викликається метод __len__ (об'єкти, що мають ненульову довжину, вважаються дійсними).

  • __getattr__ (self, name) - викликається, коли атрибут реалізації класу не знайдений в звичайних місцях (наприклад, у примірника немає методу з такою назвою).

  • __setattr__ (self, name, value) - призначення атрибута.

  • __delattr__ (self, name) - видалення атрибута (del obj.name).

  • __call__ (self [, args ...]) - виклик екземпляра класу як функції .

  • __len__ (self) - довжина об'єкта.

  • __getitem__ (self, key) - доступ за індексом (або ключу).

  • __setitem__ (self, key, value) - призначення елемента за індексом.

  • __delitem__ (self, key) - видалення елемента за індексом.

  • __iter__ (self) - повертає ітератор для контейнера.

  • __reversed__ (self) - итератор з елементів, наступних у зворотному порядку.

  • __contains__ (self, item) - перевірка на приналежність елемента контейнера (item in self).

Перевантаження арифметичних операторів

  • __add__ (self, other) - складання. x + y викликає x .__ add __ (y).

  • __sub__ (self, other) - віднімання (x - y).

  • __mul__ (self, other) - множення (x * y).

  • __truediv__ (self, other) - поділ (x / y).

  • __floordiv__ (self, other) - цілочисельне ділення (x // y).

  • __mod__ (self, other) - залишок від ділення (x% y).

  • __divmod__ (self, other) - приватна і залишок (divmod (x, y)).

  • __pow__ (self, other [, modulo]) - зведення в ступінь (x ** y, pow (x, y [, modulo])).

  • __lshift__ (self, other) - бітовий зсув вліво (x << y).

  • __rshift__ (self, other) - бітовий зсув вправо (x >> y).

  • __and__ (self, other) - бітове І (x & y).

  • __xor__ (self, other) - бітове виключає Або (x ^ y).

  • __or__ (self, other) - бітове АБО (x | y).

Підемо далі.

  • __radd__ (self, other),

  • __rsub__ (self, other),

  • __rmul__ (self, other),

  • __rtruediv__ (self, other),

  • __rfloordiv__ (self, other),

  • __rmod__ (self, other),

  • __rdivmod__ (self, other),

  • __rpow__ (self, other),

  • __rlshift__ (self, other),

  • __rrshift__ (self, other),

  • __rand__ (self, other),

  • __rxor__ (self, other),

  • __ror__ (self, other) - роблять те ж саме, що і арифметичні оператори, перераховані вище, але для аргументів, що знаходяться праворуч, і тільки в разі, якщо для лівого операнда не визначений відповідний метод.

Наприклад, операція x + y буде спочатку намагатися викликати x .__ add __ (y), і тільки в тому випадку, якщо це не вийшло, буде намагатися викликати y .__ radd __ (x). Аналогічно для інших методів.

Йдемо далі.

  • __iadd__ (self, other) - + =.

  • __isub__ (self, other) - - =.

  • __imul__ (self, other) - * =.

  • __itruediv__ (self, other) - / =.

  • __ifloordiv__ (self, other) - // =.

  • __imod__ (self, other) -% =.

  • __ipow__ (self, other [, modulo]) - ** =.

  • __ilshift__ (self, other) - << =.

  • __irshift__ (self, other) - >> =.

  • __iand__ (self, other) - & =.

  • __ixor__ (self, other) - ^ =.

  • __ior__ (self, other) - | =.

  • __neg__ (self) - унарний -.

  • __pos__ (self) - унарний +.

  • __abs__ (self) - модуль (abs ()).

  • __invert__ (self) - інверсія (~).

  • __complex__ (self) - приведення до complex.

  • __int__ (self) - приведення до int.

  • __float__ (self) - приведення до float.

  • __round__ (self [, n]) - округлення.

  • __enter__ (self), __exit__ (self, exc_type, exc_value, traceback) - реалізація менеджерів контексту.