コンテンツにスキップ

Python/演算子オーバーロード

出典: フリー教科書『ウィキブックス(Wikibooks)』

演算子オーバーロード

[編集]

Pythonには、クラスに対して演算子をカスタマイズするための特別なメソッドを提供する「演算子オーバーロード」と呼ばれる機能があります。

クラスにメソッドを定義することで、Pythonの演算子をオーバーロードすることができます。例えば、__add__メソッドを定義することで、オブジェクトを加算できるようにすることができます。

以下は、__add__メソッドを使って、2つのベクトルを加算する例です。

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)
    
v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2
print(v3.x, v3.y) # 4 6

この例では、Vectorクラスに__add__メソッドを定義し、2つのベクトルを加算する処理を行っています。v1 + v2のように演算子を使うことで、__add__メソッドが呼び出され、2つのベクトルが加算されたVectorオブジェクトが返されます。

オーバーロード可能な演算子
演算子 特殊メソッド
+ __add__
- __sub__
* __mul__
** __pow__
/ __truediv__
// __floordiv__
% __mod__
<< __lshift__
>> __rshift__
& __and__
| __or__
^ __xor__
< __lt__
<= __le__
> __gt__
>= __ge__
== __eq__
!= __ne__
+= __iadd__
-= __isub__
*= __imul__
**= __ipow__
/= __itruediv__
//= __ifloordiv__
%= __imod__
<<= __ilshift__
>>= __irshift__
&= __iand__
|= __ior__
^= __ixor__