濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 解決Python運(yùn)算符重載的問題

解決Python運(yùn)算符重載的問題

熱門標(biāo)簽:應(yīng)電話機(jī)器人打電話違法嗎 河北防封卡電銷卡 電銷機(jī)器人的風(fēng)險(xiǎn) 地圖標(biāo)注線上如何操作 手機(jī)網(wǎng)頁嵌入地圖標(biāo)注位置 開封語音外呼系統(tǒng)代理商 開封自動(dòng)外呼系統(tǒng)怎么收費(fèi) 天津電話機(jī)器人公司 400電話辦理哪種

python進(jìn)行有理數(shù)運(yùn)算時(shí),希望用運(yùn)算符(+ - * /)描述計(jì)算過程。

只是用來寫出更加自然的計(jì)算表達(dá)式。為此,python為所有算數(shù)運(yùn)算符規(guī)定了特殊方法名。其中所有特殊的名字都以兩個(gè)下劃線開始,并以兩個(gè)下劃線結(jié)束,即:

當(dāng)在Python中輸入“a+b”時(shí),程序發(fā)現(xiàn)使用了“+”運(yùn)算符,因此就會(huì)調(diào)用“__add__”方法。

此時(shí),若對(duì)自定義類中進(jìn)行運(yùn)算符的重載,則可以實(shí)現(xiàn)對(duì)類的打印、有理數(shù)運(yùn)算等等。

其中,一個(gè)問題應(yīng)當(dāng)注意,如以下代碼

class Size:
    def __init__(self, value):
        self._value = value
    def value(self):
        return self._value
    def __lt__(self, another):      #由于  是一個(gè)二元運(yùn)算符,因此會(huì)有 anothoer這一項(xiàng)的存在
        cc = self.value() > another.value()
        return self.value() > another.value()
 
    # def __gt__(self, another):
    #     gg = self._value  another.value()
    #     return self._value  another.value()
 
    def __eq__(self, another):
        return self.value() == another.value()
    def __str__(self):
        return str(self.value())
a=Size(3)
b=Size(2)
print(a,b,a>b)

進(jìn)行調(diào)試時(shí),盡管沒有對(duì)“>”運(yùn)算符(對(duì)應(yīng)的魔法方法是“__gt”)進(jìn)行重載,但是運(yùn)算到

print(a,b,a>b)

時(shí),程序并不會(huì)報(bào)錯(cuò),且仍然會(huì)調(diào)用重載后的"__lt__"。我個(gè)人理解是因?yàn)镻ython自動(dòng)將“a>b”看成是“ba”。若此時(shí)重載了“__gt__”,則程序不會(huì)去調(diào)用“__lt__”了。

補(bǔ)充:python中的運(yùn)算符與表達(dá)式

Python是面向?qū)ο蟮木幊陶Z言,在Python中一切都是對(duì)象。對(duì)象由數(shù)據(jù)和行為兩部分組成,而行為主要通過方法來實(shí)現(xiàn),通過一些特殊方法的重寫,可以實(shí)現(xiàn)運(yùn)算符重載。

運(yùn)算符也是表現(xiàn)對(duì)象行為的一種形式,不同類的對(duì)象支持的運(yùn)算符有所不同,同一種運(yùn)算符作用于不同的對(duì)象時(shí)也可能會(huì)表現(xiàn)出不同的行為,這正是“多態(tài)”的體現(xiàn)。

在Python中,單個(gè)常量或變量可以看作最簡(jiǎn)單的表達(dá)式,使用除賦值運(yùn)算符之外的其他任意運(yùn)算符和函數(shù)調(diào)用連接的式子也屬于表達(dá)式

運(yùn)算符優(yōu)先級(jí)遵循的規(guī)則為:算術(shù)運(yùn)算符優(yōu)先級(jí)最高,其次是位運(yùn)算符、成員測(cè)試運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符等,算術(shù)運(yùn)算符遵循“先乘除,后加減”的基本運(yùn)算原則。

雖然Python運(yùn)算符有一套嚴(yán)格的優(yōu)先級(jí)規(guī)則,但是強(qiáng)烈建議在編寫復(fù)雜表達(dá)式時(shí)使用圓括號(hào)來明確說明其中的邏輯來提高代碼可讀性

算數(shù)運(yùn)算符

(1)+運(yùn)算符除了用于算術(shù)加法以外,還可以用于列表、元組、字符串的連接,但不支持不同類型的對(duì)象之間相加或連接。

(2)*運(yùn)算符除了表示算術(shù)乘法,還可用于列表、元組、字符串這幾個(gè)序列類型與整數(shù)的乘法,表示序列元素的重復(fù),生成新的序列對(duì)象。字典和集合不支持與整數(shù)的相乘,因?yàn)槠渲械脑厥遣辉试S重復(fù)的。

(3)運(yùn)算符/和//在Python中分別表示算術(shù)除法和算術(shù)求整商(floor division)

(4)%運(yùn)算符可以用于整數(shù)或?qū)崝?shù)的求余數(shù)運(yùn)算,還可以用于字符串格式化,但是這種用法并不推薦。

(5)**運(yùn)算符表示冪乘

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Python的運(yùn)算符重載詳解
  • Python正確重載運(yùn)算符的方法示例詳解
  • Python運(yùn)算符重載詳解及實(shí)例代碼
  • Python運(yùn)算符重載用法實(shí)例分析
  • Python運(yùn)算符重載用法實(shí)例
  • python 運(yùn)算符 供重載參考

標(biāo)簽:蘭州 常州 江蘇 山東 宿遷 六盤水 駐馬店 成都

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解決Python運(yùn)算符重載的問題》,本文關(guān)鍵詞  解決,Python,運(yùn)算符,重載,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解決Python運(yùn)算符重載的問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于解決Python運(yùn)算符重載的問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    顺平县| 灌南县| 宝坻区| 通城县| 石河子市| 自贡市| 霸州市| 花垣县| 高清| 新乡市| 清苑县| 三河市| 绥中县| 松滋市| 玉山县| 邵东县| 商城县| 泰兴市| 西乌珠穆沁旗| 蓬安县| 潍坊市| 双江| 高青县| 女性| 巴中市| 常熟市| 商南县| 中牟县| 满城县| 汤原县| 西宁市| 永川市| 武安市| 元阳县| 南木林县| 金川县| 全椒县| 合江县| 东阳市| 江都市| 辽宁省|