欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python的運(yùn)算符重載詳解

 更新時(shí)間:2021年05月12日 10:05:01   作者:一只螢火蟲(chóng)  
這篇文章主要介紹了Python的運(yùn)算符重載詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下

一、前言

運(yùn)算符重載:為運(yùn)算符定義方法

所謂重載,就是賦予新的含義同一個(gè)運(yùn)算符可以有不同的功能

二、重載作用

讓自定義的實(shí)例像內(nèi)建對(duì)象一樣進(jìn)行運(yùn)算符操作讓程序簡(jiǎn)介易讀對(duì)自定義對(duì)象將運(yùn)算符賦予新的規(guī)則 運(yùn)算符和特殊方法 運(yùn)算符重載

在這里插入圖片描述

# @function:運(yùn)算符重載
# @Description: 一只螢火蟲(chóng)

class MyInteger:
    """
    創(chuàng)建一個(gè)自定義的整數(shù)類(lèi)型
    """
    def __init__(self, data=0):
        # 1.如果傳入的參數(shù)時(shí)是整數(shù)類(lèi)型,那么直接賦值
        # 2.如果傳入的不是整數(shù)類(lèi)型,則判斷能夠轉(zhuǎn)化成整數(shù),不能轉(zhuǎn)換就賦初值為0
        if isinstance(data, int):
            self.data = data
        elif isinstance(data, str) and data.isdecimal():
            self.data = int(data)
        else:
            self.data = 0

    def __add__(self, other):
        if isinstance(other, MyInteger):
            # 返回當(dāng)前對(duì)象的副本
            return MyInteger(self.data + other.data)    # 相加的是MyInteger類(lèi)型
        elif isinstance(other, int):
            return MyInteger(self.data + other)         # 相加的是整型

    def __radd__(self, other):
        return self.__add__(other)

    def __eq__(self, other):
        if isinstance(other, MyInteger):
            return self.data == other.data
        elif isinstance(other, int):
            return self.data == other
        else:
            return False

    def __str__(self):
        """
        在打印、str(對(duì)象)時(shí)被自動(dòng)調(diào)用
        :return: 用來(lái)返回對(duì)象的可讀字符串形式(適合普通用戶閱讀)
        """
        return str(self.data)

    def __repr__(self):
        """ 用來(lái)將對(duì)象轉(zhuǎn)換成供解釋器讀取的形式,用來(lái)閱讀對(duì)象的底層繼承關(guān)系及內(nèi)存地址"""
        return "[自定義整數(shù)類(lèi)型的值]:{}\t地址:{}".format(self.data, id(self.data))

    def __sub__(self, other):
        return MyInteger(self.data - other.data)

    def __del__(self):
        print("當(dāng)前對(duì)象:" + str(self.data) + "被銷(xiāo)毀")     # 程序運(yùn)行完之后自動(dòng)被銷(xiāo)毀


if __name__ == '__main__':
    num1 = MyInteger(123)
    num2 = MyInteger(321)
    num3 = num1 + num2      # 等價(jià)于:num3 = num1.__add__(num2)
    print("num3 =", num3)
    num4 = MyInteger("123")
    num5 = num4 + 124       # 在自定義對(duì)象的右側(cè)相加整數(shù)類(lèi)型
    num6 = 124 + num4       # 在自定義對(duì)象的左側(cè)相加整數(shù)類(lèi)型
    print("num5 = ", num5, "\t num6 = ", num6)

    num7 = MyInteger(1024)
    num8 = MyInteger(1024)
    print("num7 == num8 :", num7 == num8)

三、自定義列表

在這里插入圖片描述

# @function:自定義列表
# @Description:一只螢火蟲(chóng)

class MyList:
    def __init__(self, data=None):
        self.data = None
        if data is None:
            self.data = []
        else:
            self.data = data

    def __getitem__(self, index):
        # 讓本類(lèi)的對(duì)象支持下標(biāo)訪問(wèn)
        if isinstance(index, int):
            return self.data[index]
        elif type(index) is slice:      # 如果參數(shù)是切片類(lèi)型 [10:30:2]
            print("切片的起始值:", index.start)
            print("切片的結(jié)束值:", index.stop)
            print("切片的步長(zhǎng):", index.stop)
            return self.data[index]

    def __setitem__(self, key, value):
        self.data[key] = value

    def __contains__(self, item):
        print("判斷傳入的", item, "是否在列表元素中")
        return self.data.__contains__(item)

    def __str__(self):
        return str(self.data)

    def pop(self, index=-1):
        # 默認(rèn)刪除并返回最后一個(gè)元素
        return self.data.pop(index)

    def __delitem__(self, key):
        del self.data[key]

    def append(self, item):
        self.data.append(item)


if __name__ == '__main__':
    my_list1 = MyList([item for item in range(10)])
    my_list1[1] = 1111
    print("顯示列表:", my_list1)
    print("列表的切片:", my_list1[2:8:2])
    print("刪除并返回最后一個(gè)元素:", my_list1.pop())
    del my_list1[1]
    print("刪除指定下標(biāo)的元素:", my_list1)
	
輸出結(jié)果:
顯示列表: [0, 1111, 2, 3, 4, 5, 6, 7, 8, 9]
切片的起始值: 2
切片的結(jié)束值: 8
切片的步長(zhǎng): 8
列表的切片: [2, 4, 6]
刪除并返回最后一個(gè)元素: 9
刪除指定下標(biāo)的元素: [0, 2, 3, 4, 5, 6, 7, 8]

到此這篇關(guān)于Python的運(yùn)算符重載詳解的文章就介紹到這了,更多相關(guān)Python運(yùn)算符重載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyCharm 專(zhuān)業(yè)版安裝圖文教程

    PyCharm 專(zhuān)業(yè)版安裝圖文教程

    這篇文章主要介紹了PyCharm 專(zhuān)業(yè)版安裝圖文教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • python爬蟲(chóng)之場(chǎng)內(nèi)ETF基金獲取

    python爬蟲(chóng)之場(chǎng)內(nèi)ETF基金獲取

    這篇文章主要介紹了python爬蟲(chóng)之場(chǎng)內(nèi)ETF基金獲取,ETF?是一種場(chǎng)內(nèi)交易型基金,可以在盤(pán)中進(jìn)行交易,交易性比場(chǎng)外基金強(qiáng)一點(diǎn),下文基于python的相關(guān)資料展開(kāi),需要的小伙伴可以參考一下
    2022-05-05
  • python實(shí)現(xiàn)word 2007文檔轉(zhuǎn)換為pdf文件

    python實(shí)現(xiàn)word 2007文檔轉(zhuǎn)換為pdf文件

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)word 2007文檔轉(zhuǎn)換為pdf文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲(gui界面)

    python實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲(gui界面)

    這篇文章主要介紹了python如何實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python四則運(yùn)算表達(dá)式求值示例詳解

    python四則運(yùn)算表達(dá)式求值示例詳解

    這篇文章主要為大家介紹了python四則運(yùn)算表達(dá)式求值示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Python基礎(chǔ)知識(shí)快速上手入門(mén)學(xué)習(xí)

    Python基礎(chǔ)知識(shí)快速上手入門(mén)學(xué)習(xí)

    本篇文章使用代碼示例,一看就會(huì),從基礎(chǔ)語(yǔ)法、變量類(lèi)型、運(yùn)算符和條件語(yǔ)句多個(gè)方面詳細(xì)闡述了Python基礎(chǔ)知識(shí)快速上手入門(mén)學(xué)習(xí)的內(nèi)容,希望本文能對(duì)Python初學(xué)者有所幫助
    2023-08-08
  • Python?數(shù)據(jù)分析教程探索性數(shù)據(jù)分析

    Python?數(shù)據(jù)分析教程探索性數(shù)據(jù)分析

    這篇文章主要介紹了Python?數(shù)據(jù)分析教程探索性數(shù)據(jù)分析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Python?Asyncio?庫(kù)之同步原語(yǔ)常用函數(shù)詳解

    Python?Asyncio?庫(kù)之同步原語(yǔ)常用函數(shù)詳解

    這篇文章主要為大家介紹了Python?Asyncio?庫(kù)之同步原語(yǔ)常用函數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python opencv膚色檢測(cè)的實(shí)現(xiàn)示例

    python opencv膚色檢測(cè)的實(shí)現(xiàn)示例

    這篇文章主要介紹了python opencv膚色檢測(cè)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python numpy矩陣信息說(shuō)明,shape,size,dtype

    python numpy矩陣信息說(shuō)明,shape,size,dtype

    這篇文章主要介紹了python numpy矩陣信息說(shuō)明,shape,size,dtype,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05

最新評(píng)論