python中的運算子過載

2021-06-23 03:21:57 字數 1424 閱讀 2036

學過c++的都知道我們在類中可以對運算子進行過載,以使運算子實現自己所需要的功能

自然在python中也可以實現運算子的過載

方法名        過載的操作說明        呼叫表示式

__init__    建構函式        建立物件:class()

__del__        析構函式        釋放物件的時候

__add__        「+」            x + y

__or__        「|」            x | y

__repr__    列印,轉換        print x, `x`

__call__    函式呼叫        x()

__getattr__    屬性引用        x.undefined

__getitem__    索引            x[key],for迴圈,in測試

__setitem__    索引賦值        x[key] = value

__getslice__    分片            x[low:high]

__len__        長度            len(x)

__cmp__        比較            x == y ,x < y

__radd__    右邊的操作符"+"        非例項 + x

見下面的例子:

class example(object):

def __init__(self,x=0.0,y=0.0):

self.x = x

self.y = y

def __str__(self):

return "(%s, %s)"%(self.x, self.y)

def __add__(self,rhs):

return example(self.x + rhs.x,self.y + rhs.y)

def __sub__(self,rhs):

return example(self.x - rhs.x,self.y - rhs.y)

@classmethod

def calculate(cls,a,b):

return cls(b[0] - a[0],b[1] - a[1])

point1 = (10.0,30.0)

point2 = (25.0,50.0)

point12 = example.calculate(point1,point2)

print "point12 + (4,6) is",point12 + example(4,6)

print "point12 - (4,6) is",point12 - example(4,6)

結果如我們所想的一樣:



Python 中的運算子過載

一種運算子對於不同型別的物件,有不同的使用方式。例如,用於整型物件,表示兩個數相加 用於字串,表示連線這兩個字串。x,y 10,20print x y 30 a,b john wick print a b john wick 運算子因操作物件的型別的不同而執行不同的操作,這種特性稱為過載。運算子的功...

Python 運算子過載

在 python 中is 是兩個運算子,對物件進行比較,分別對id,type value 進行比較。is 比較id type value三維 而 僅 比較value。實驗發現其實is,僅僅是比較一些簡單的基礎變數。class test object def init self self.value ...

Python運算子過載

print 呼叫父類建構函式 def parentmethod self print 呼叫父類方法 def setattr self,attr self.parentattr attr def getattr self print 父類屬性 self.parentattr def del self ...