演算子のオーバーロード


PythonではC++のような演算子オーバーロードが可能です。Pythonでは演算子は__add__, __sub__(それぞれ+, -に対応)のような関数にマッピングされており、この関数をオーバーライドすれば演算子のオーバーロードができます。次の例は、プライベートメンバ クラスの継承のサンプルからPointBを派生させ、点(Point)の加算を可能にしたサンプルです。

# class PointB

class PointB(PointA) :
    def __init__(self, x1, y1) :
        PointA.__init__(self, x1, y1)
    def __add__(self, other) :
        return PointB(self._Point__x + other._Point__x, \
                      self._Point__y + other._Point__y)
        
p1 = PointB(-1.0, 1.0)
print p1.get()
p2 = PointB(1.0, -1.0)
print p2.get()
p3 = p1 + p2  # ここで点同士を加算
print p3.get()