日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python魔法方法好难_一篇干货好文,轻松掌握python魔法方法

發布時間:2025/4/5 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python魔法方法好难_一篇干货好文,轻松掌握python魔法方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

當一個對象被創建以后,會立即調用構造方法。

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

一個例子學會所有內容。

代碼講解:定義了一個超類Bird,一個子類SongBird, 超類Bird定義了構造方法__init__是關于hungry特性的。在定義子類的時候構造方法被重寫,但是新的構造方法沒有任何關于hungry特性的代碼。為了達到目的就得必須調用超類的構造方法。

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 '', line 1, in

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''

相信看了上個例子的小伙伴開始有疑問了,方法重寫后,我應該怎么調用超類的構造方法呢?

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

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

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

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

上例中,通過將當前的實例作為self參數提供給未綁定方法,SongBird就能夠使用其他超類構造方法的所有實現,也就是說屬性hungry能被設置。

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

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

super函數:主要是應用在新式類。

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

如果創建一個無窮序列會發生什么?先上代碼。

代碼解釋: 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

總結

以上是生活随笔為你收集整理的python魔法方法好难_一篇干货好文,轻松掌握python魔法方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。