Python 運算子的自訂

Python Operator

參考資料:

https://docs.python.org/3/library/operator.html

在 object 中,使用 Operator functions 可以定義或重新定義使用運算子的行為。

例如:

class A:
    def __init__(self):
        self.c = 10
    def __add__(self, b): return self.c+b

a = A()
print(a+20)
#回傳 30

因此可應用為:

class Point:
    def __init__(self, x=0., y=0.):
        self.x = x
        self.y = y
    def __add__(self, b): return Point(self.x+b.x, self.y+b.y)

兩點相加即為兩者 x 與 y 座標總和。

一些可迭代物件的運算子對應如下:

def __add__(a, b): return a+b
def __sub__(a, b): return a-b
def __mul__(a, b): return a*b
def __truediv__(a, b): return a/b
def __mod__(a, b): return a%b
def __pow__(a, b): return a**b
def __invert__(obj): return ~obj
def __pos__(obj): return +obj
def __neg__(obj): return -obj
def __eq__(a, b): return a==b
def __ne__(a, b): return a!=b
def __contains__(a, b): return a in b
def __getitem__(a, b): return a[b]

Comments

comments powered by Disqus