91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Python運算符重載

發布時間:2021-07-09 18:01:45 來源:億速云 閱讀:205 作者:chen 欄目:web開發

這篇文章主要講解了“什么是Python運算符重載 ”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“什么是Python運算符重載 ”吧!

一、什么是Python中的運算符重載?

Python運算符用于內置類。但是相同的運算符對不同的類型有不同的行為。例如,+運算符將對兩個數字執行算術加法、合并兩個列表并連接兩個字符串。

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

那么,當將它們與用戶定義類的對象一起使用時會發生什么呢?

示例 :下面的類,它試圖在二維坐標系中模擬一個點。

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

現在,運行代碼并嘗試在Python shell中添加兩個點。

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

什么是Python運算符重載

代碼:

這是很多錯誤。由于Python不知道如何將兩個Point對象加在一起而引發TypeError。

但是,可以通過運算符重載向Python教授這一點。但是首先,讓對特殊函數有所了解。

二、Python中的特殊函數

1. 什么是特殊模式?

以雙下劃線開頭的類函數在Python中稱為特殊函數。這是因為,它們不是普通的函數。上面定義的init__()函數就是其中之一。每次創建該類的新對象時都會調用它。

2. 案例

使用特殊函數,可以使的類與內置函數兼容。

例 :

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

什么是Python運算符重載

打印輸出沒有達到預想的效果。

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

示例

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)

現在,讓print()再次嘗試該函數。

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

什么是Python運算符重載

事實證明這樣更好,當使用內置函數str()或時,將調用相同的方法format()。

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

什么是Python運算符重載

因此,當您執行str(p1)或format(p1)時,Python在內部執行p1.str()。因此得名,特殊函數。下面繼續回到操作符重載。

三、重載+運算符

要重載+符號,將需要在類中實現add()函數。擁有權利的同時也被賦予了重大的責任。可以在此函數內做任何喜歡的事情。但是返回坐標和的Point對象是明智的。

示例

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)

測試一下:

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

什么是Python運算符重載

實際上發生的是,當您執行p1 + p2時,Python會調用p1 .__ add (p2),也就是Point . add  __(p1,p2)。同樣,也可以重載其他運算符。

四、重載比較運算符

Python不限制運算符重載為算術運算符。也可以重載比較運算符。

假設,想在Point類中實現小于運算符(<) ,讓從原點比較這些點的大小,并為此目的返回結果。可以如下實現。

示例

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中運行這些示例。

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

什么是Python運算符重載

下表列出了需要實現以重載其他比較運算符的特殊函數。

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

五、總結

本文基于Python基礎,介紹了Python運算符重載。介紹了什么是運算符重載?通過案例的分析,進行講解。分模塊講解了重載+運算符,  重載比較運算符,在實際案例的應用。

通過豐富的案例分析,效果圖的展示,讓讀者能夠更好理解和學習。

大家積極嘗試,有時候看到別人實現起來很簡單,但是到自己動手實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。

感謝各位的閱讀,以上就是“什么是Python運算符重載 ”的內容了,經過本文的學習后,相信大家對什么是Python運算符重載 這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永城市| 怀化市| 柳河县| 普定县| 新平| 牟定县| 田林县| 乌拉特前旗| 浦江县| 海城市| 略阳县| 海南省| 四平市| 巢湖市| 阳东县| 镇原县| 罗城| 永嘉县| 鄱阳县| 民县| 商水县| 毕节市| 应城市| 万宁市| 宁津县| 屏南县| 乌兰察布市| 峨山| 子洲县| 通城县| 响水县| 临夏市| 阳新县| 维西| 连城县| 廊坊市| 壤塘县| 辽阳市| 襄城县| 玛纳斯县| 余姚市|