運算子過載

2021-10-07 23:23:27 字數 1455 閱讀 1251

類可以過載加減運算,列印,函式呼叫,索引等內建運算,運算子過載使我們的物件的行為與內建函式一樣,在python呼叫時操作符會自動的作用於類的物件,python會自動的搜尋並呼叫物件中指定的方法完成操作。

常見的運算子過載方法:

#舉例

#數字和字串都能相加

print(1

+2)print

("1"

+"2"

)#不同的型別用加法會有不同的解釋

class

person

(object):

def__init__

(self, num)

: self.num = num

#運算子過載

def__add__

(self, other)

:return person(self.num + other.num)

#方法重寫

def__str__

(self)

:return

"num = "

+str

(self.num)

#如果兩個物件相加會怎樣?

#物件相加,編譯器解釋不了,所以就要用到運算子過載

per1 = person(1)

per2 = person(2)

print

(per1 + per2)

#上述列印就等價於:print(per1.__add__(per2)),只不過add方法會自動呼叫

print

(per1)

print

(per2)

練習: 重寫list類新增乙個相減的功能:

list1-list2中元素交集

__sub __

class

mylist

(list):

def__sub__

(self, other)

: list1 =

#創乙個空列表

#遍歷第乙個傳入的列表,如果第乙個列表中的元素在第二個列表中能找到,加入空列表

for x in self:

if x in other:

# print(x)

return list1

if __name__ ==

"__main__"

: list1 = mylist([1

,2,3

,4])

list2 = mylist([1

,2,3

,5])

print

(list1-list2)

# 輸出結果[1

,2,3

]

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載

c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...