亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Python中魔法方法的示例分析

發布時間:2021-06-28 11:42:00 來源:億速云 閱讀:198 作者:小新 欄目:開發技術

小編給大家分享一下Python中魔法方法的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

特殊方法一覽

Python中魔法方法的示例分析

在 Python 的學習和使用過程中, 你一定碰到過一些 特殊方法, 它們開頭和結尾都有兩條下劃線, 也叫魔法方法 (Magic method), 或者 Dunder method (double under method).

例如:

>>> dir(int)
['__abs__', '__add__', '__and__', 
'__bool__', '__ceil__', '__len__', 
'__delattr__', '__dir__', '__divmod__', 
'__doc__', '__eq__', '__float__', ...]

* Python 的內置數據類型實現了非常多的魔法方法, 可以通過 dir() 進行查看.

初識魔法方法

當我們想從一個數組 nums = [1, 2, 3] 中獲取第一個元素, 我們知道只需要執行 nums[0] 即可, 為了求得 nums[0] 的值, Python 的編譯器實際上會隱式調用 nums.__getitem__(0)

>>> nums = [1, 2, 3]
>>> nums[0]
1
>>> nums.__getitem__(0)
1

再例如獲取數組的長度, 我們使用 len(nums) 來獲取, Python 編譯器也是調用了特殊方法 nums.__len__()

>>> len(nums)
3
>>> nums.__len__()
3
  • 特殊方法的存在是給 Python 編譯器隱式調用的

  • 我們自己寫程序的時候不需要調用

  • 它從規范上, 不可以自己定義類似 _ _xx_ _ 的方法

魔法方法有什么作用

運算符重載

在 Python 中 + 可以對兩個 int 類型的數據進行加操作, 也可以對字符串進行拼接, 這都是魔法方法在背后保證了整體語言風格的一致性.

魔法方法被大量用在運算符重載方面, 比如 +, -, * , /的操作. 我們自己可以定義想要的數據結構或者數據類型, 這些自定義的class可以跟 Python 內置的數據類型一樣, 從而可以寫出更具表達力的代碼, 換句話說就是更具有 Pythonic 風格的代碼.

動手實踐

下面我們自定義一個叫工具人的類, 讓這個類支持加法, 乘法, 大于等于等操作

class ToolMan(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __len__(self):
        return len(self.name)

    def __str__(self):
        return "你好, 打工人!"

    def __add__(self, other):
        # 將兩個ToolMan的年齡加起來
        return self.age + other.age

    def __mul__(self, other):
        # 將兩個 ToolMan 的年齡相乘
        return self.age * other.age

    def __ge__(self, other):
        # 對比連個 ToolMan 的年齡
        return self.age >= other.age

我們自定義了這樣一個類, 你可以發現類中重寫了很多魔法方法, 這些魔法方法可以讓你自定義的類也實現類似 interger 的加減乘除, 比較大小等操作!

>>> tool_man1 = ToolMan("打工人1", 20)
>>> tool_man2 = ToolMan("打工人2", 25)
>>> print(tool_man1)
你好, 打工人!
>>> tool_man1 + tool_man2
45
>>> tool_man1 * tool_man2
500
>>> tool_man1 >= tool_man2
False

以上是“Python中魔法方法的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

乌鲁木齐县| 大庆市| 兴仁县| 淮阳县| 巴中市| 东源县| 黄浦区| 东丽区| 那坡县| 望都县| 株洲县| 玉溪市| 阿勒泰市| 沁阳市| 临夏县| 温州市| 汶上县| 汉源县| 芷江| 辉南县| 调兵山市| 宁津县| 宜城市| 宁都县| 洪江市| 临泉县| 利辛县| 新和县| 宜兰市| 溆浦县| 河曲县| 六枝特区| 正阳县| 潞城市| 琼海市| 大足县| 辉县市| 乌拉特前旗| 方城县| 郑州市| 安溪县|