python 過載 Python中的運算子過載

2021-10-11 19:47:06 字數 1544 閱讀 5524

運算子大家在寫程式時不知不覺都已經用爛了,所謂運算子就是對運算元的操作,比如算數運算子(+,-,*,/), 關係運算子(>,

其實當我們使用一些運算子時,python本質呼叫了的一些magic method,比如+,對應的是__add__。比如==,對應的是__eq__。 我們可以在自己的類中去重寫它們。

class user:

def __init__(self, name, pwd):

self.name = name

self.pwd = pwd

u1 = user("jack", "123456")

u2 = user("jack", "123456")

print(u1 == u2)

執行結果肯定是false,因為u1和u2指向了不同的物件,可是產品裡,希望只要兩個物件欄位name和pwd一樣,他們就是同乙個使用者,於是你可以重寫__eq__, 重寫==的實現。

class user:

def __init__(self, name, pwd):

self.name = name

self.pwd = pwd

def __eq__(self, other):

if self.name == other.name and self.pwd == other.pwd:

return true

else:

return false

u1 = user("jack", "123456")

u2 = user("jack", "123456")

print(u1 == u2)

執行結果

true
又比如上個例子中兩個物件如果相加,就返回兩個物件name欄位的拼接,那需要重寫__add__

class user:

def __init__(self, name, pwd):

self.name = name

self.pwd = pwd

def __eq__(self, other):

if self.name == other.name and self.pwd == other.pwd:

return true

else:

return false

def __add__(self, other):

return self.name + other.name

u1 = user("jack", "123456")

u2 = user("jack", "123456")

print(u1 == u2)

print(u1 + u2)

執行結果

true

jackjack

Python中的過載方法

在類中,對內建物件 例如 整數和列表 所能做的事,幾乎都有相應的特殊名稱的過載方法。最常見的就是過載類的建構函式 init 函式 方法重構 呼叫 init 建構函式 物件建立 x class args del 析構函式 x物件收回 add 運算子 如果沒有 iadd x y,x y or 運算子 位...

python支援過載嗎 python有過載嗎

在python中,具有過載的思想卻沒有過載的概念。所以有的人說python這麼語言並不支援函式過載,有的人說python具有過載功能。實際上python程式設計中具有過載的目的缺無過載的行為,或者說是python並不需要過載!python是一門動態語言,不需要宣告變數型別,函式中可以接受任何型別的引...

python中的運算子過載

學過c 的都知道我們在類中可以對運算子進行過載,以使運算子實現自己所需要的功能 自然在python中也可以實現運算子的過載 方法名 過載的操作說明 呼叫表示式 init 建構函式 建立物件 class del 析構函式 釋放物件的時候 add x y or x y repr 列印,轉換 print ...