最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的運算符重載詳解

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

一、前言

運算符重載:為運算符定義方法

所謂重載,就是賦予新的含義同一個運算符可以有不同的功能

二、重載作用

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

在這里插入圖片描述

# @function:運算符重載
# @Description: 一只螢火蟲

class MyInteger:
    """
    創(chuàng)建一個自定義的整數(shù)類型
    """
    def __init__(self, data=0):
        # 1.如果傳入的參數(shù)時是整數(shù)類型,那么直接賦值
        # 2.如果傳入的不是整數(shù)類型,則判斷能夠轉(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):
            # 返回當前對象的副本
            return MyInteger(self.data + other.data)    # 相加的是MyInteger類型
        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(對象)時被自動調(diào)用
        :return: 用來返回對象的可讀字符串形式(適合普通用戶閱讀)
        """
        return str(self.data)

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

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

    def __del__(self):
        print("當前對象:" + str(self.data) + "被銷毀")     # 程序運行完之后自動被銷毀


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

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

三、自定義列表

在這里插入圖片描述

# @function:自定義列表
# @Description:一只螢火蟲

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

    def __getitem__(self, index):
        # 讓本類的對象支持下標訪問
        if isinstance(index, int):
            return self.data[index]
        elif type(index) is slice:      # 如果參數(shù)是切片類型 [10:30:2]
            print("切片的起始值:", index.start)
            print("切片的結(jié)束值:", index.stop)
            print("切片的步長:", 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):
        # 默認刪除并返回最后一個元素
        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("刪除并返回最后一個元素:", my_list1.pop())
    del my_list1[1]
    print("刪除指定下標的元素:", my_list1)
	
輸出結(jié)果:
顯示列表: [0, 1111, 2, 3, 4, 5, 6, 7, 8, 9]
切片的起始值: 2
切片的結(jié)束值: 8
切片的步長: 8
列表的切片: [2, 4, 6]
刪除并返回最后一個元素: 9
刪除指定下標的元素: [0, 2, 3, 4, 5, 6, 7, 8]

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

相關(guān)文章

  • python二進制轉(zhuǎn)換模塊的具體用法

    python二進制轉(zhuǎn)換模塊的具體用法

    在pyton中,通過struct模塊來對二進制進行轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python自動化測試筆試面試題精選

    Python自動化測試筆試面試題精選

    在本篇文章里小編給大家整理的是一篇關(guān)于Python自動化測試筆試面試時常見的編程題,需要的朋友們可以學(xué)習(xí)參考下。
    2020-03-03
  • Python Unittest原理及基本使用方法

    Python Unittest原理及基本使用方法

    這篇文章主要介紹了Python Unittest原理及基本使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python函數(shù)式編程指南(三):迭代器詳解

    Python函數(shù)式編程指南(三):迭代器詳解

    這篇文章主要介紹了Python函數(shù)式編程指南(三):迭代器詳解,本文講解了迭代器(Iterator)概述、使用迭代器、生成器表達式(Generator expression)和列表解析(List Comprehension)等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • Python中函數(shù)的參數(shù)傳遞與可變長參數(shù)介紹

    Python中函數(shù)的參數(shù)傳遞與可變長參數(shù)介紹

    這篇文章主要介紹了Python中函數(shù)的參數(shù)傳遞與可變長參數(shù)介紹,本文分別給出多個代碼實例來講解多種多樣的函數(shù)參數(shù),需要的朋友可以參考下
    2015-06-06
  • PyCharm中配置PyQt的實現(xiàn)步驟

    PyCharm中配置PyQt的實現(xiàn)步驟

    PyCharm是JetBrains推出的一款強大的Python IDE,結(jié)合PyQt可以進行pythion高效開發(fā)桌面GUI應(yīng)用程序,本文就來介紹一下PyCharm中配置PyQt的實現(xiàn)步驟,感興趣的可以了解一下
    2025-07-07
  • Python使用低通濾波器模糊圖像功能實現(xiàn)

    Python使用低通濾波器模糊圖像功能實現(xiàn)

    這篇文章主要介紹了Python使用低通濾波器模糊圖像,我們介紹了多種不同類型的濾波器核與卷積操作,使用 scipy.ndimage 模塊中的濾波器模糊圖像,利用 scipy.fftpack 模塊的 fft2() 函數(shù)實現(xiàn)高斯模糊,介紹了scipy.signal模塊的彩色圖像頻域卷積,需要的朋友可以參考下
    2023-03-03
  • Python中序列的修改、散列與切片詳解

    Python中序列的修改、散列與切片詳解

    在Python中,最基本的數(shù)據(jù)結(jié)構(gòu)是序列(sequence)。下面這篇文章主要給大家介紹了關(guān)于Python中序列的修改、散列與切片的相關(guān)資料文中通過示例代碼介紹的非常詳細,需要的朋友可以參考,下面來一起看看吧。
    2017-08-08
  • Python函數(shù)any()和all()的用法及區(qū)別介紹

    Python函數(shù)any()和all()的用法及區(qū)別介紹

    any函數(shù):any(x),只要x中有一個不為空,0,false就返回True,否則返回False。all(x)函數(shù)必須x中的所有元素均不為空,0,false才會返回True,否則返回False。接下來通過本文給大家介紹Python函數(shù)any()和all()的用法及區(qū)別介紹,需要的朋友參考下吧
    2018-09-09
  • 用python實現(xiàn)將數(shù)組元素按從小到大的順序排列方法

    用python實現(xiàn)將數(shù)組元素按從小到大的順序排列方法

    今天小編就為大家分享一篇用python實現(xiàn)將數(shù)組元素按從小到大的順序排列方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

磴口县| 石嘴山市| 汝城县| 精河县| 万载县| 香河县| 伽师县| 南通市| 古蔺县| 井陉县| 峨眉山市| 阿巴嘎旗| 团风县| 深州市| 昌平区| 东明县| 临夏县| 开阳县| 新郑市| 庆元县| 万年县| 开封县| 顺平县| 潼南县| 海伦市| 教育| 河东区| 定结县| 芷江| 云林县| 陇南市| 鱼台县| 永顺县| 宜黄县| 师宗县| 浦北县| 乌兰浩特市| 攀枝花市| 黎川县| 临西县| 筠连县|