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

溫馨提示×

溫馨提示×

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

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

Python的運算符重載怎么實現

發布時間:2022-02-07 17:25:48 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

本篇內容主要講解“Python的運算符重載怎么實現”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python的運算符重載怎么實現”吧!

一、前言

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

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

二、重載作用

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

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

class MyInteger:
    """
    創建一個自定義的整數類型
    """
    def __init__(self, data=0):
        # 1.如果傳入的參數時是整數類型,那么直接賦值
        # 2.如果傳入的不是整數類型,則判斷能夠轉化成整數,不能轉換就賦初值為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(對象)時被自動調用
        :return: 用來返回對象的可讀字符串形式(適合普通用戶閱讀)
        """
        return str(self.data)

    def __repr__(self):
        """ 用來將對象轉換成供解釋器讀取的形式,用來閱讀對象的底層繼承關系及內存地址"""
        return "[自定義整數類型的值]:{}	地址:{}".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       # 在自定義對象的右側相加整數類型
    num6 = 124 + num4       # 在自定義對象的左側相加整數類型
    print("num5 = ", num5, "	 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:      # 如果參數是切片類型 [10:30:2]
            print("切片的起始值:", index.start)
            print("切片的結束值:", 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)
	
輸出結果:
顯示列表: [0, 1111, 2, 3, 4, 5, 6, 7, 8, 9]
切片的起始值: 2
切片的結束值: 8
切片的步長: 8
列表的切片: [2, 4, 6]
刪除并返回最后一個元素: 9
刪除指定下標的元素: [0, 2, 3, 4, 5, 6, 7, 8]

到此,相信大家對“Python的運算符重載怎么實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

斗六市| 无锡市| 河南省| 即墨市| 白银市| 平泉县| 平遥县| 孝义市| 德令哈市| 永靖县| 晋宁县| 安吉县| 天津市| 嘉黎县| 陵水| 津南区| 东辽县| 鄱阳县| 蓬莱市| 南乐县| 嘉善县| 浙江省| 五大连池市| 宿迁市| 兴城市| 文安县| 东宁县| 乌鲁木齐市| 乐东| 沂源县| 沁水县| 安多县| 将乐县| 酉阳| 安义县| 曲麻莱县| 全南县| 西贡区| 兴城市| 尉氏县| 新邵县|