2011年8月24日水曜日

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

今更ながらPythonの演算子オーバーロード について調べたのでメモ。
クラスのメソッドを作成するだけなので 簡単にできますね。


class OverLoadTest(object):
    def __init__(self, a):
        self.a = a

    # +
    def __add__(self, b):
        self.a = self.a + b
    # -
    def __sub__(self, b):
        self.a = self.a - b
    # /
    def __div__(self, b):
        self.a = self.a / b
    # *
    def __mul__(self, b):
        self.a = self.a * b

    def __repr__(self):
        return str(self.a)

if __name__ == "__main__":
    o = OverLoadTest(5)
    print o
    o + 5
    print o
    o - 5
    print o
    o / 5
    print o


普段はJavaで書いているから演算子オーバーロードが頭にないなー。

使ってるライブラリでも演算子オーバーロード見たことない気がする。
(知らないだけか?)
効果的に使えるようになりたいですね。

0 件のコメント:

コメントを投稿