日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python入門教程之運算符重載詳解_python

作者:海擁 ? 更新時間: 2022-11-05 編程語言

運算符重載意味著賦予超出其預定義的操作含義的擴展含義。例如運算符 + 用于添加兩個整數以及連接兩個字符串和合并兩個列表。這是可以實現的,因為 '+' 運算符被 int 類和 str 類重載。您可能已經注意到,相同的內置運算符或函數對不同類的對象顯示不同的行為,這稱為運算符重載。

# Python 程序顯示 + 運算符用于不同目的。

print(1 + 2)

# 連接兩個字符串
print("Geeks"+"For")

# Product two numbers
print(3 * 4)

# 重復字符串
print("Geeks"*4)

輸出

3
GeeksFor
12
GeeksGeeksGeeksGeeks

如何重載Python中的運算符

考慮到我們有兩個對象,它們是一個類的物理表示(用戶定義的數據類型),我們必須使用二進制“+”運算符添加兩個對象,它會引發錯誤,因為編譯器不知道如何添加兩個對象.?因此,我們為運算符定義了一個方法,該過程稱為運算符重載。我們可以重載所有現有的運算符,但不能創建新的運算符。為了執行運算符重載,Python 提供了一些特殊函數或魔術函數,當它與特定運算符關聯時會自動調用這些函數。例如,當我們使用 + 運算符時,會自動調用魔術方法 add,其中定義了+ 運算符的操作。

在 Python 中重載二進制 + 運算符: ?

當我們在用戶定義的數據類型上使用運算符時,會自動調用與該運算符關聯的特殊函數或魔術函數。改變運算符的行為就像改變方法或函數的行為一樣簡單。您在類中定義方法,運算符根據方法中定義的行為工作。當我們使用 + 運算符時,會自動調用魔術方法 add ,其中定義了 + 運算符的操作。通過改變這個魔法方法的代碼,我們可以給 + 運算符賦予額外的意義。?

代碼 1:

# Python 程序說明如何重載二元 + 運算符

class A:
	def __init__(self, a):
		self.a = a

	# adding two objects
	def __add__(self, o):
		return self.a + o.a
ob1 = A(1)
ob2 = A(2)
ob3 = A("Geeks")
ob4 = A("For")

print(ob1 + ob2)
print(ob3 + ob4)

輸出

3
GeeksFor

代碼 2:

# 使用二元 + 運算符重載執行兩個復數相加的 Python 程序。

class complex:
	def __init__(self, a, b):
		self.a = a
		self.b = b

	# 添加兩個對象
	def __add__(self, other):
		return self.a + other.a, self.b + other.b

Ob1 = complex(1, 2)
Ob2 = complex(2, 3)
Ob3 = Ob1 + Ob2
print(Ob3)

輸出

(3, 5)

在 Python中重載比較運算符

# Python程序重載比較運算符

class A:
	def __init__(self, a):
		self.a = a
	def __gt__(self, other):
		if(self.a>other.a):
			return True
		else:
			return False
ob1 = A(2)
ob2 = A(3)
if(ob1>ob2):
	print("ob1 is greater than ob2")
else:
	print("ob2 is greater than ob1")

輸出 :?

ob2 is greater than ob1

重載相等和小于運算符

# Python程序重載相等和小于運算符

class A:
	def __init__(self, a):
		self.a = a
	def __lt__(self, other):
		if(self.a<other.a):
			return "ob1 is lessthan ob2"
		else:
			return "ob2 is less than ob1"
	def __eq__(self, other):
		if(self.a == other.a):
			return "Both are equal"
		else:
			return "Not equal"
				
ob1 = A(2)
ob2 = A(3)
print(ob1 < ob2)

ob3 = A(4)
ob4 = A(4)
print(ob1 == ob2)

輸出 :?

ob1 is lessthan ob2
Not equal

用于運算符重載的 Python 魔術方法或特殊函數

二元運算符

運算符 Magic Method
+ add(自己,其他)
sub(自己,其他)
***** mul(自己,其他)
/ truediv(自我,其他)
// floordiv(自我,其他)
% mod(自我,其他)
****** pow(自己,其他)
>> rshift(自我,其他)
<< lshift(自我,其他)
& (自己,其他)
? (自己,其他) ?
xor(自我,其他)

比較運算符

運算符 Magic Method
< lt(自己,其他)
> gt(自己,其他)
<= le(自己,其他)
>= ge(自己,其他)
== eq(自我,其他)
!= ne(自己,其他)

賦值運算符

運算符 Magic Method
-= isub(自我,其他)
+= iadd(自己,其他)
*= imul(自我,其他)
/= idiv(自我,其他)
//= ifloordiv(自我,其他)
%= imod(自己,其他)
**= ipow(自我,其他)
>>= irshift(自我,其他)
<<= ilshift(自己,其他)
&= iand(自己,其他)
**?=** ior(自己,其他) ?
^= ixor(自我,其他)

一元運算符

運算符 Magic Method
neg(自我)
+ pos(自我)
~ 反轉(自我)

注意: 不能更改運算符的運算符數量。例如。您不能將一元運算符重載為二元運算符。以下代碼將引發語法錯誤。

原文鏈接:https://juejin.cn/post/7141949315248816159

欄目分類
最近更新