内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

這篇文章主要介紹“Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些”,在日常操作中,相信很多人在Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)專注于長樂網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供長樂營銷型網(wǎng)站建設(shè),長樂網(wǎng)站制作、長樂網(wǎng)頁設(shè)計、長樂網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造長樂網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供長樂網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

構(gòu)造函數(shù)

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

Python里所有類的構(gòu)造函數(shù)都是__init__,其中根據(jù)我們的需求,構(gòu)造函數(shù)又分為有參構(gòu)造函數(shù)和無慘構(gòu)造函數(shù)。如果當(dāng)前沒有定義構(gòu)造函數(shù),那么系統(tǒng)會自動生成一個無參空的構(gòu)造函數(shù)。例如:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

在有繼承關(guān)系的類中,只要父類被顯示定義,那么子類在創(chuàng)建的時候就會調(diào)用父類的構(gòu)造方法創(chuàng)建父類對象,盡管子類沒有從父類繼承屬性,也會自動被執(zhí)行。例如:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

如果子類想從父類繼承獲取屬性,那么需要顯示調(diào)用父類的構(gòu)造函數(shù)才能獲取,否則只能獲取父類方法。例如:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

這里我們需要引入一個新的概念,即函數(shù)重載。在類內(nèi)部,如果存在多個函數(shù)名相同,函數(shù)參數(shù)不同(個數(shù)不同、類型不同、順序不同)那么我們稱這幾個函數(shù)是重載函數(shù),函數(shù)返回值不作為重載的依據(jù)。在java和C++里我們都有類似的概念。但是Python是動態(tài)編程語言,其數(shù)據(jù)沒有數(shù)據(jù)類型,因此在類內(nèi)部我們沒法進行函數(shù)重載,因此類內(nèi)部不能有同名的多個方法,所以我們的構(gòu)造方法要么不寫,要么只能寫一個。如果不寫系統(tǒng)會自動生成一個空的無參構(gòu)造方法;如果寫了,那么只能調(diào)用該構(gòu)造方法。另外我們在學(xué)習(xí)裝飾器的時候似乎在類內(nèi)部寫了幾個同名的方法,例如:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

那么這幾個同名方法是重載關(guān)系嗎?不是的,因為他們不是完整的方法,他們一定更要加上@property、@name.setter、@name.deleter限制才是完整的,因此這里不是函數(shù)重載。

析構(gòu)函數(shù)

構(gòu)造函數(shù)是在對象創(chuàng)建的時候被自動執(zhí)行的,其主要職責(zé)是對對象進行初始化。析構(gòu)函數(shù)則是在對象銷毀(執(zhí)行del或被回收)的時候被自動執(zhí)行的,其主要職責(zé)是對對象進行回收。先前我們沒有寫析構(gòu)方法,那么系統(tǒng)會自動生成一個空的析構(gòu)函數(shù)。接下來我們就寫一個析構(gòu)函數(shù)。Python里的析構(gòu)方法名為__del__。例如:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

我們這么調(diào)用:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

執(zhí)行為

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

在這里我們要重點說下python的垃圾回收機制。

現(xiàn)在程序員對系統(tǒng)的垃圾回收機制不是特別關(guān)注,因為現(xiàn)在硬件發(fā)展的很快,我們可用的資源很豐富,服務(wù)器內(nèi)存4G都是小的,可能大多是8G起步,不夠再加。但是對于一些高端崗位和高精行業(yè),垃圾回收機制還是很重要的。所以我們在這里梳理下python里的垃圾回收機制。

Python里的垃圾回收機制以引用計數(shù)為主。系統(tǒng)會為每個對象分配一個引用計數(shù)器,用來記錄當(dāng)前對象被使用的次數(shù)。既然涉及到計數(shù),就有加和減的操作。系統(tǒng)規(guī)定,滿足下述條件進行計數(shù)器加1操作:

1.新創(chuàng)建一個對象

2.引用一個對象

3.對象作為實參傳遞。

滿足下述條件進行計數(shù)器減1操作:

1.對該對象進行del操作

2.該對象的引用被賦新值

3.對象退出當(dāng)前作用域(最常見的就是退出函數(shù)作用域)

在python里,我們通過sys.getrefcount(對象名),來獲取該對象的當(dāng)前引用計數(shù)器,注意,首次這里的引用計數(shù)不一定為1,因為有系統(tǒng)臨時引用。只有當(dāng)指向?qū)ο蟮囊糜嫈?shù)器變成0(首次的初始值)的時候,該對象才會真的被銷毀,該對象的析構(gòu)函數(shù)才會被執(zhí)行。例如:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

輸出為

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

注意,上述首次調(diào)用sys.getrefcount(ad)的時候的返回值為4說明當(dāng)前系統(tǒng)有其他的臨時用用,那么我們最終只要到4了說明就返回初始狀態(tài)了。最后delad的時候會將系統(tǒng)臨時引用也釋放。我們當(dāng)前的運行環(huán)境是win+pycharm。我們再改下代碼:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

輸出為

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

從上述輸出可以看出,系統(tǒng)對基本數(shù)據(jù)類型似乎還有其他操作,造成其初始引用計數(shù)比我們預(yù)期的引用計數(shù)大。而引用數(shù)據(jù)類型數(shù)據(jù)則是完全在我們預(yù)期的。

只有最終釋放該對象的時候(引用計數(shù)為0的時候),__del__析構(gòu)方法才會被執(zhí)行。

__str__方法

先看我們的代碼:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

輸出為

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

我們打印該對象的時候,得到是該對象的內(nèi)存地址,能不能像打印基本數(shù)據(jù)類型的數(shù)據(jù)一樣來打印我們的引用數(shù)據(jù)類型呢?比如說上述類Student應(yīng)該打印他的實例變量啊。

我們現(xiàn)在提到的__str__方法就是要完成這個功能的,__str__方法有一個返回值,這個返回值就是我們執(zhí)行print的時候的輸出值,因此我們可以在__str__方法內(nèi)格式化輸出內(nèi)容。例如:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

輸出為

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

從上面的輸出可以看出,我們想輸出格式化引用數(shù)據(jù)類型數(shù)據(jù)的時候,就要重寫該類里的__str__方法,該方法里你可以設(shè)置當(dāng)前內(nèi)容的輸出內(nèi)容。這個__str__方法是object類的方法,因為python里所有類都是直接或者間接從object派生出來的,因此每個引用數(shù)據(jù)類型都有__str__方法。我們只需要重寫該方法覆蓋父類的方法即可。否則系統(tǒng)會默認(rèn)去調(diào)用object里的__str__方法。

__dict__

可能有些人說了,我怎么知道我的類有哪些內(nèi)置成員(屬性和方法)呢?比如說上面的__str_我壓根就不知道有這個方法,我怎么調(diào)用?python類里確實有個屬性,可以打印出該類的所有內(nèi)置內(nèi)容。即__dict__。注意這個__dict__是屬性不是方法,調(diào)用的時候不要加()

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

輸出為

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

為何stu1.__dict__的輸出內(nèi)容較少,而Student.__dict__的輸出內(nèi)容較多呢?因為stu1是對象,對于對象來講,有意義的就是屬性,因為方法是所有對象共享的。而數(shù)據(jù)是自己特有的,執(zhí)行的時候只需要攜帶當(dāng)前的對象的地址就可以執(zhí)行該類的方法(即self)。而Student是一個類,類是有屬性和方法組成的,所以Student.__dict__的輸出稍微多點,包括方法和屬性。

如果你想知道該類的父類有哪些內(nèi)置成員,你就打印該類的父類的__dict__屬性即可。例如我們看下Student類的父類object有哪些內(nèi)置成員,如下:

Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些

Ojbect.__dict__的輸出稍微長些,自己打印看下吧,里面肯定有__str__的說明的。

到此,關(guān)于“Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文名稱:Python面向?qū)ο罄锍R姷膬?nèi)置成員有哪些
地址分享:http://m.rwnh.cn/article42/gdieec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈、電子商務(wù)、小程序開發(fā)、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
磴口县| 如皋市| 饶河县| 澎湖县| 巴楚县| 门头沟区| 池州市| 乡城县| 辽中县| 达拉特旗| 枣庄市| 武强县| 邯郸市| 东兰县| 勐海县| 嫩江县| 淄博市| 绥宁县| 连南| 元谋县| 钟山县| 黑河市| 屯门区| 滦平县| 白城市| 松阳县| 宝鸡市| 潮安县| 开远市| 思茅市| 罗定市| 阿克| 玉环县| 星子县| 南溪县| 峡江县| 沭阳县| 界首市| 德江县| 吴川市| 偃师市|