成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

什么是Python運(yùn)算符重載

這篇文章主要講解了“什么是Python運(yùn)算符重載 ”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“什么是Python運(yùn)算符重載 ”吧!

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到芝罘網(wǎng)站設(shè)計(jì)與芝罘網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋芝罘地區(qū)。

一、什么是Python中的運(yùn)算符重載?

Python運(yùn)算符用于內(nèi)置類。但是相同的運(yùn)算符對(duì)不同的類型有不同的行為。例如,+運(yùn)算符將對(duì)兩個(gè)數(shù)字執(zhí)行算術(shù)加法、合并兩個(gè)列表并連接兩個(gè)字符串。

Python中的這一功能允許同一運(yùn)算符根據(jù)上下文具有不同的含義,稱為運(yùn)算符重載。

那么,當(dāng)將它們與用戶定義類的對(duì)象一起使用時(shí)會(huì)發(fā)生什么呢?

示例 :下面的類,它試圖在二維坐標(biāo)系中模擬一個(gè)點(diǎn)。

class Point:     def __init__(self, x = 0, y = 0):         self.x = x         self.y = y

現(xiàn)在,運(yùn)行代碼并嘗試在Python shell中添加兩個(gè)點(diǎn)。

p1 = Point(2,3) p2 = Point(-1,2) print(p1 + p2)

什么是Python運(yùn)算符重載

代碼:

這是很多錯(cuò)誤。由于Python不知道如何將兩個(gè)Point對(duì)象加在一起而引發(fā)TypeError。

但是,可以通過(guò)運(yùn)算符重載向Python教授這一點(diǎn)。但是首先,讓對(duì)特殊函數(shù)有所了解。

二、Python中的特殊函數(shù)

1. 什么是特殊模式?

以雙下劃線開(kāi)頭的類函數(shù)在Python中稱為特殊函數(shù)。這是因?yàn)椋鼈儾皇瞧胀ǖ暮瘮?shù)。上面定義的init__()函數(shù)就是其中之一。每次創(chuàng)建該類的新對(duì)象時(shí)都會(huì)調(diào)用它。

2. 案例

使用特殊函數(shù),可以使的類與內(nèi)置函數(shù)兼容。

例 :

p1 = Point(2,3) print(p1)

什么是Python運(yùn)算符重載

打印輸出沒(méi)有達(dá)到預(yù)想的效果。

但是,如果在類中定義str()方法,可以控制它的打印輸出方式。把這個(gè)加到的類中。

示例

class Point:     def __init__(self, x = 0, y = 0):         self.x = x         self.y = y          def __str__(self):         return "({0},{1})".format(self.x,self.y)

現(xiàn)在,讓print()再次嘗試該函數(shù)。

p1 = Point(3,7) print(p1)

什么是Python運(yùn)算符重載

事實(shí)證明這樣更好,當(dāng)使用內(nèi)置函數(shù)str()或時(shí),將調(diào)用相同的方法format()。

p1 = Point(2, 3) print(str(p1)) print(format(p1))

什么是Python運(yùn)算符重載

因此,當(dāng)您執(zhí)行str(p1)或format(p1)時(shí),Python在內(nèi)部執(zhí)行p1.str()。因此得名,特殊函數(shù)。下面繼續(xù)回到操作符重載。

三、重載+運(yùn)算符

要重載+符號(hào),將需要在類中實(shí)現(xiàn)add()函數(shù)。擁有權(quán)利的同時(shí)也被賦予了重大的責(zé)任。可以在此函數(shù)內(nèi)做任何喜歡的事情。但是返回坐標(biāo)和的Point對(duì)象是明智的。

示例

class Point:     def __init__(self, x = 0, y = 0):         self.x = x         self.y = y          def __str__(self):         return "({0},{1})".format(self.x,self.y)          def __add__(self,other):         x = self.x + other.x         y = self.y + other.y         return Point(x,y)

測(cè)試一下:

p1 = Point(2,3) p2 = Point(-1,2) print(p1 + p2)

什么是Python運(yùn)算符重載

實(shí)際上發(fā)生的是,當(dāng)您執(zhí)行p1 + p2時(shí),Python會(huì)調(diào)用p1 .__ add (p2),也就是Point . add  __(p1,p2)。同樣,也可以重載其他運(yùn)算符。

四、重載比較運(yùn)算符

Python不限制運(yùn)算符重載為算術(shù)運(yùn)算符。也可以重載比較運(yùn)算符。

假設(shè),想在Point類中實(shí)現(xiàn)小于運(yùn)算符(<) ,讓從原點(diǎn)比較這些點(diǎn)的大小,并為此目的返回結(jié)果。可以如下實(shí)現(xiàn)。

示例

class Point:     def __init__(self, x = 0, y = 0):         self.x = x         self.y = y          def __str__(self):         return "({0},{1})".format(self.x,self.y)          def __lt__(self,other):         self_mag = (self.x ** 2) + (self.y ** 2)         other_mag = (other.x ** 2) + (other.y ** 2)         return self_mag < other_mag

嘗試在Python shell中運(yùn)行這些示例。

print(Point(1, 1) < Point(-2, -3))  print(Point(1, 1) < Point(0.5, -0.2))  print(Point(1, 1) < Point(1, 1))

什么是Python運(yùn)算符重載

下表列出了需要實(shí)現(xiàn)以重載其他比較運(yùn)算符的特殊函數(shù)。

操作符表達(dá)式內(nèi)部
小于(<)p1 <p2p1 .__ lt __(p2)
小于等于(<=)p1 <= p2p1 .__ le __(p2)
等于(==)p1 == p2p1 .__ eq __(p2)
不等于(!=)p1!= p2p1 .__ ne __(p2)
大于(>)p1> p2p1 .__ gt __(p2)
大于等于(>=)p1> = p2p1 .__ ge __(p2)

五、總結(jié)

本文基于Python基礎(chǔ),介紹了Python運(yùn)算符重載。介紹了什么是運(yùn)算符重載?通過(guò)案例的分析,進(jìn)行講解。分模塊講解了重載+運(yùn)算符,  重載比較運(yùn)算符,在實(shí)際案例的應(yīng)用。

通過(guò)豐富的案例分析,效果圖的展示,讓讀者能夠更好理解和學(xué)習(xí)。

大家積極嘗試,有時(shí)候看到別人實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,但是到自己動(dòng)手實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問(wèn)題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。

感謝各位的閱讀,以上就是“什么是Python運(yùn)算符重載 ”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)什么是Python運(yùn)算符重載 這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

當(dāng)前題目:什么是Python運(yùn)算符重載
分享URL:http://jinyejixie.com/article22/iehscc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT電子商務(wù)、Google、動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
女性| 唐海县| 聂拉木县| 高唐县| 安义县| 邳州市| 交城县| 永新县| 岐山县| 乌兰浩特市| 乐昌市| 延庆县| 肃宁县| 山东省| 浪卡子县| 扎赉特旗| 格尔木市| 萝北县| 穆棱市| 晋中市| 藁城市| 桓仁| 外汇| 崇州市| 三门峡市| 荥经县| 句容市| 唐河县| 勃利县| 泸西县| 宁化县| 安龙县| 睢宁县| 铜梁县| 伊春市| 嘉禾县| 承德市| 太康县| 文化| 多伦县| 厦门市|