免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
一篇干貨好文,輕松掌握python魔法方法

在python學(xué)習(xí)中,往往你會看到有的名稱前面和后面都加上了雙下劃線,這種寫法很特別,到底是什么意思呢?

在python 中由這些名字組成的集合所包含的方法就叫做魔法方法,也叫做特殊方法。今天我們就要講一些重要的魔法方法,最重要的就是__init__方法。

當(dāng)一個對象被創(chuàng)建以后,會立即調(diào)用構(gòu)造方法。

創(chuàng)建構(gòu)造方法:在python中創(chuàng)建一個構(gòu)造方法很簡單,只要把init方法的名字從簡單的init修改為魔法版本__init__即可。

一個例子學(xué)會所有內(nèi)容。

代碼講解:定義了一個超類Bird,一個子類SongBird, 超類Bird定義了構(gòu)造方法__init__是關(guān)于hungry特性的。在定義子類的時候構(gòu)造方法被重寫,但是新的構(gòu)造方法沒有任何關(guān)于hungry特性的代碼。為了達(dá)到目的就得必須調(diào)用超類的構(gòu)造方法。

def __init__(self):

self.hungry=True

def eat(self):

if self.hungry:

print ''Aaaah...''

self.hungry=False

else:

print ''No,thanks!''

class SongBird(Bird):

self.sound=''Squawk!''

def sing(self):

print self.sound

>>> b=Bird()

>>> sb=SongBird()

>>> sb.sing()

>>> sb.eat()

Traceback (most recent call last):

File '<pyshell#5>', line 1, in <module>

File 'C:\Users\xdong\OneDrive - Micron Technology, Inc\python study\prictice\bird_hungry.py', line 6, in eat

AttributeError: ''SongBird'' object has no attribute ''hungry''

相信看了上個例子的小伙伴開始有疑問了,方法重寫后,我應(yīng)該怎么調(diào)用超類的構(gòu)造方法呢?

我們現(xiàn)在要說兩種情況教你怎么調(diào)用,說這個問題之前,我們先插點(diǎn)題外話,與其說是題外話倒不如說是知識擴(kuò)展,我們先了解一下老式類和新式類的區(qū)別,這個需要看你的python的安裝版本是多少,現(xiàn)在大部分都是3.0以上版本了,那么早在之前,以2.2版本為分割線,之前的版本是用的老師類,之后的用新式類。所以根據(jù)目前的發(fā)展情況,建議大家都用新式類,省的麻煩。

好了,話不多說,回歸正題,我們就用老式類和新式類分別講一下怎么可以直接調(diào)用上個例子中的超類Bird的構(gòu)造方法。

我們先說一下原理,方便你理解。

在調(diào)用一個實(shí)例的方法時,該方法的self參數(shù)會被自動綁定到實(shí)例上,但是如果直接調(diào)用類的方法,那么就沒有實(shí)例會被綁定,這樣就可以自由地提供需要的self參數(shù)。其實(shí)這樣子也被稱為未綁定方法。

上例中,通過將當(dāng)前的實(shí)例作為self參數(shù)提供給未綁定方法,SongBird就能夠使用其他超類構(gòu)造方法的所有實(shí)現(xiàn),也就是說屬性hungry能被設(shè)置。

一般情況下,調(diào)用超類的未綁定方法才是版本最好的選擇。

既然說到這了,相信眼睛犀利的小伙伴們開始疑問了,那個super是什么東東?別著急,慢慢來!

super函數(shù):主要是應(yīng)用在新式類。

序列和映射是對象的集合。為了實(shí)現(xiàn)它們基本行為,如果對象是不變的,那么久需要兩個魔法方法,如果可變的就需要4個。

如果創(chuàng)建一個無窮序列會發(fā)生什么?先上代碼。

代碼解釋: start=1,step=2 會得到(1,3,5,7,9,11......)

self.start key*self.step s[4]=1 4*2=9 s[5]=1 5*2=11

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第九章:魔法方法、屬性和迭代器
python學(xué)習(xí)筆記之七:魔法方法,屬性
刻意練習(xí):Python基礎(chǔ) -- Task10. 類與對象
python中的__init__(self,name)
山腰復(fù)習(xí)群知識點(diǎn)
Python self用法詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服