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

Перевантаження операторів в Python дозволяє визначити або змінити поведінку вбудованих операторів (наприклад, +, -, *, /) для користувацьких класів. Це робиться за допомогою спеціальних методів, котрі також називаються магічними методами.

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

# Використання
v1 = Vector(2, 3)
v2 = Vector(2, 3)
v3 = Vector(4, 5)
print(v1 == v2)  # Виведе: True
print(v1 == v3)  # Виведе: False

Арифметичні оператори:

ОператорМетод без підкресленняСигнатура метода
+add__add__(self, other)
-sub__sub__(self, other)
*mul__mul__(self, other)
/truediv__truediv__(self, other)
//floordiv__floordiv__(self, other)
%mod__mod__(self, other)
**pow__pow__(self, other)

Оператори порівняння:

ОператорМетод без підкресленняСигнатура метода
==eq__eq__(self, other)
!=ne__ne__(self, other)
<lt__lt__(self, other)
<=le__le__(self, other)
>gt__gt__(self, other)
>=ge__ge__(self, other)

Логічні оператори:

ОператорМетод без підкресленняСигнатура метода
&and__and__(self, other)
|or__or__(self, other)
^xor__xor__(self, other)
~invert__invert__(self)

Оператори індексації та зрізів:

ОператорМетод
obj[key]__getitem__(self, key)
obj[key] = value__setitem__(self, key, value)
del obj[key]__delitem__(self, key)

Унарні оператори:

ОператорМетод
-__neg__(self)
+__pos__(self)
abs()__abs__(self)
~__invert__(self)

Оператори присвоєння:

ОператорМетод
+=__iadd__(self, other)
-=__isub__(self, other)
*=__imul__(self, other)
/=__itruediv__(self, other)
//=__ifloordiv__(self, other)
%=__imod__(self, other)
**=__ipow__(self, other)

 

2015-2026 © SumyNikNet