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

Python魔術(shù)方法深入分析講解

 更新時(shí)間:2023年02月08日 10:22:38   作者:HaiFan.  
所謂魔法函數(shù)(Magic Methods),是Python的?種?級語法,允許你在類中?定義函數(shù)(函數(shù)名格式?般為__xx__),并綁定到類的特殊?法中。?如在類A中?定義__str__()函數(shù),則在調(diào)?str(A())時(shí),會(huì)?動(dòng)調(diào)?__str__()函數(shù),并返回相應(yīng)的結(jié)果

前言

魔術(shù)方法就是一個(gè)類/對象中的方法,和普通方法唯一的不同是:普通方法需要調(diào)用,而魔術(shù)方法是在特定時(shí)刻自動(dòng)觸發(fā)

__init__

初始化魔術(shù)方法

初始化魔術(shù)方法
如何觸發(fā):初始化對象時(shí)觸發(fā)
參數(shù):至少一個(gè)self
返回值:無
作用:初始化對象的成員
注:使用這個(gè)方式初始化的成員都是寫入對象中的,類中不存在

class Person:
    def __init__(self,name):
        self.name = name
a = Person('lisan')
print(a.name)

__new__

實(shí)例化魔術(shù)方法

如何觸發(fā):在實(shí)例化對象時(shí)觸發(fā)

參數(shù):至少一個(gè)cls,接收當(dāng)前類

返回值:必須返回一個(gè)對象實(shí)例

作用:實(shí)例化對象

注意:實(shí)例化對象是Object類底層實(shí)現(xiàn),其他類繼承了Object的 __new__才能夠?qū)崿F(xiàn)實(shí)例化對象。沒事別碰這個(gè)魔術(shù)方法,先觸發(fā)__new__,才會(huì)觸發(fā)__init__

class Person:
    def __init__(self,name):
        print('------------init')
        self.name = name
    def __new__(cls,*args,**kwargs):
        print('----------new')
        return super(Person,cls).__new__(cls,*args,**kwargs)
a = Person('lisan')

__call__

調(diào)用對象的魔術(shù)方法

如何觸發(fā):將對象當(dāng)作函數(shù)調(diào)用時(shí)觸發(fā)對象()

參數(shù):至少一個(gè)self接收對象

返回值:根據(jù)情況而定

作用:可以將復(fù)雜的步驟進(jìn)行合并操作,減少調(diào)用的步驟,方便使用

注意:無

class Person:
    def __init__(self):
        print('------------init')
    def __new__(cls ,*args ,**kwargs):
        print('----------new')
        ip = object.__new__(cls ,*args ,**kwargs)
        print(ip)
        return ip
    def __call__(self ,name):
        print('-----------call')
        print(f'執(zhí)行對象得到的參數(shù){name}')
a = Person()
a('nbnb')

__del__

析構(gòu)魔術(shù)方法

如何觸發(fā):當(dāng)對象沒有用(沒有任何變量引用)的時(shí)候觸發(fā)

參數(shù):一個(gè)self

返回值:無

作用:使用完對象是回收資源

注意:del不一定會(huì)觸發(fā)當(dāng)前方法,只有當(dāng)前對象沒有任何變量接收時(shí)才會(huì)觸發(fā)

class Person:
    def __init__(self,name):
        self.name = name
    def __del__(self):
        pass
a = Person('lisi')
b = a
print(b.name)
b.name = 'wangwu'
print(a.name)

通過del可以刪除某對象對地址的引用。

通過import sys``sys.getrefcount(a)可以查看對地址的引用次數(shù)。

當(dāng)代碼全部執(zhí)行結(jié)束的時(shí)候,會(huì)自動(dòng)執(zhí)行del方法。

__str__

觸發(fā)時(shí)機(jī):當(dāng)你打印對象名的時(shí)候自動(dòng)觸發(fā),調(diào)用 __str__里面的內(nèi)容

注意:一定要加返回值,return后面的內(nèi)容就是打印對象看到的內(nèi)容。

class Person:
    def __init__(self,name):
        self.name = name
    # def __str__(self):
    #     return self.name
a = Person('lisan')
print(a)

當(dāng)我們直接打印對象的時(shí)候,打印出來的是一個(gè)地址,這個(gè)地址我們是看不懂的,編譯器才看得懂。

想打印對象名,要顯示出準(zhǔn)確的東西,就需要 __str__

class Person:
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return self.name
a = Person('lisan')
print(a)

總結(jié)

__init__和__str__這兩個(gè)是重點(diǎn)。

__new__的作用:開辟空間

__del__的作用:沒有指針引用的時(shí)候會(huì)調(diào)用,一般是不需要重寫的

__call__的作用:想不想讓對象當(dāng)函數(shù)用。

到此這篇關(guān)于Python魔術(shù)方法深入分析講解的文章就介紹到這了,更多相關(guān)Python魔術(shù)方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas 強(qiáng)制類型轉(zhuǎn)換 df.astype實(shí)例

    pandas 強(qiáng)制類型轉(zhuǎn)換 df.astype實(shí)例

    這篇文章主要介紹了pandas 強(qiáng)制類型轉(zhuǎn)換 df.astype實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Pandas讀取MySQL數(shù)據(jù)到DataFrame的方法

    Pandas讀取MySQL數(shù)據(jù)到DataFrame的方法

    今天小編就為大家分享一篇Pandas讀取MySQL數(shù)據(jù)到DataFrame的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Linux下Python獲取IP地址的代碼

    Linux下Python獲取IP地址的代碼

    這篇文章主要介紹了Linux下Python獲取IP地址的代碼,需要的朋友可以參考下
    2014-11-11
  • 深入討論P(yáng)ython函數(shù)的參數(shù)的默認(rèn)值所引發(fā)的問題的原因

    深入討論P(yáng)ython函數(shù)的參數(shù)的默認(rèn)值所引發(fā)的問題的原因

    這篇文章主要介紹了深入討論P(yáng)ython函數(shù)的參數(shù)的默認(rèn)值所引發(fā)的問題的原因,利用了Python解釋器在內(nèi)存地址分配中的過程解釋了參數(shù)默認(rèn)值帶來陷阱的原因,需要的朋友可以參考下
    2015-03-03
  • 簡單介紹一下pyinstaller打包以及安全性的實(shí)現(xiàn)

    簡單介紹一下pyinstaller打包以及安全性的實(shí)現(xiàn)

    這篇文章主要介紹了簡單介紹一下pyinstaller打包以及安全性的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python中pow函數(shù)用法及功能說明

    python中pow函數(shù)用法及功能說明

    在本篇文章里小編給大家整理的是一篇關(guān)于python中pow函數(shù)用法及功能說明內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • python抓取需要掃微信登陸頁面

    python抓取需要掃微信登陸頁面

    這篇文章主要介紹了python抓取需要掃微信登陸頁面的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Python中“FileNotFoundError: [Errno 2] No such file or directory”的解決辦法

    Python中“FileNotFoundError: [Errno 2] No 

    最近在使用vscode寫代碼(python)時(shí)發(fā)現(xiàn)使用相對路徑讀取文件以及寫入文件時(shí),想要直接在當(dāng)前目錄下讀寫一直提示沒有該文件,需要返回根目錄,所以本文給大家介紹了Python中“FileNotFoundError: [Errno 2] No such file or directory”的解決辦法,需要的朋友可以參考下
    2025-06-06
  • Python使用Py2neo創(chuàng)建Neo4j的節(jié)點(diǎn)和關(guān)系

    Python使用Py2neo創(chuàng)建Neo4j的節(jié)點(diǎn)和關(guān)系

    Neo4j是一款開源圖數(shù)據(jù)庫,使用Python語言訪問Neo4j可以使用Py2neo。本文介紹了使用Py2neo訪問Neo4j,批量創(chuàng)建節(jié)點(diǎn)和關(guān)系的方法
    2021-08-08
  • python重寫方法和重寫特殊構(gòu)造方法

    python重寫方法和重寫特殊構(gòu)造方法

    這篇文章主要介紹了python重寫方法和重寫特殊構(gòu)造方法,對于父類的方法,只要他不符合子類模擬的實(shí)物的行為,都可以進(jìn)行重寫,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-07-07

最新評論

汉阴县| 万宁市| 壶关县| 道孚县| 南昌县| 鸡泽县| 安多县| 安吉县| 呼图壁县| 仁寿县| 滨州市| 萝北县| 大安市| 阳江市| 昔阳县| 上虞市| 清苑县| 宣化县| 水富县| 芮城县| 西青区| 建湖县| 乡城县| 栾川县| 泽州县| 武清区| 四川省| 虞城县| 资源县| 申扎县| 库车县| 普兰县| 高雄县| 贡山| 黑河市| 肇州县| 温州市| 神农架林区| 饶平县| 泽州县| 屏东市|