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

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
python 代碼中 self 有什么用途?

在python語言中編寫面向?qū)ο蟮拇a時,都會遇到 self 這個參數(shù),其代表一個類的實例。使用 self 訪問一個類的方法和屬性,就綁定了用參數(shù)所要表示的屬性,之所以這樣做的原因是,python沒有提供相應(yīng)的語法來指向?qū)嵗膶傩?。python 中調(diào)用類的方法都是類的實例自動傳遞自身所擁有的方法,而不是自動接收傳遞來的方法:方法的第一個參數(shù)就是方法要調(diào)用的實例,self 總是指向當(dāng)前對象。

看看下面一段代碼中,self 和 obj 是否指向同一個對象:

class check: def __init__(self): print(' self 在內(nèi)存中的地址:',id(self)) obj = check()print(' 類的對象在內(nèi)存的地址:',id(obj))

輸出結(jié)果:

self 在內(nèi)存中的地址: 2074376855360

類的對象在內(nèi)存的地址: 2074376855360

接下來再看一段使用 self 的示例代碼:

class car():          # init 方法, 即constructor    def __init__(self, model, color):        self.model = model        self.color = color              def show(self):        print('車型:', self.model )        print('顏色:', self.color )          # 兩個對象有不同的 self,各自的self包含各自的屬性audi = car('奧迪 a4', '藍(lán)色')ferrari = car('法拉利 488', '紅色')  audi.show()     #car.show(audi) # 輸出結(jié)果與上句相同ferrari.show()   #car.show(ferrari) # 輸出結(jié)果與上句相同  # 也可以像以下這樣使用print('奧迪車型是: ',audi.model)print('法拉利的顏色是: ',ferrari.color)

輸出結(jié)果如下圖:

在以上這段代碼中,這兩句print('奧迪車型是: ',audi.model) 和 print('法拉利的顏色是: ',ferrari.color) ,首先由constructor構(gòu)建方法,給兩個具體的對象指定了具體的對象,再給屬性賦值,就完成了對象的初始化,屬性(model,color)和對象(audi,ferrari)就建立了聯(lián)系。這種情形的背后,每個實例中都調(diào)用了方法,并把實例及其對應(yīng)的方法一起發(fā)送給所調(diào)用的方法(car.show(audi),car.show(ferrari)),其中 self 是constructor構(gòu)建方法和實例方法要傳遞的第一個參數(shù)。

對于實例的方法和 constructor 構(gòu)建方法而言,self 必須作為第一個參數(shù),否則就會報錯。看看下面的示例代碼:

# Self 必須是第一個參數(shù)class check: def __init__(): print('這是構(gòu)建方法 Constructor') object = check()print(' 本段代碼運行正常') # 沒有把 self 作為參數(shù)傳遞,所以報錯以下錯誤Traceback (most recent call last): File '/home/c736b5fad311dd1eb3cd2e280260e7dd.py', line 6, in <module> object = check()TypeError: __init__() takes 0 positional arguments but 1 was given

以上代碼段中,類check中定義的 __init__ 方法沒有把 Self 作為參數(shù)傳遞,運行即報錯,如下圖所示:

特別注意:Self 是python中的一種慣例用法,可以稱為(實例方法的)參數(shù),但不是關(guān)鍵字,可以用其他的名稱代替,但一般建議還是使用 Self 這個名稱,以便更容易地閱讀代碼。

以下代碼段中 把 Self 替換為其他名稱:

class this_is_class:     def __init__(in_place_of_self):         print('把參數(shù) Self的名稱改為 in_place_of_self')           object = this_is_class() 

輸出結(jié)果如下圖:

(本文完)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python 常用內(nèi)建方法
Python數(shù)據(jù)分析系列文章之Python基礎(chǔ)
山腰復(fù)習(xí)群知識點
史上最細(xì)致講解!Python 5大常用魔術(shù)方法,一學(xué)就會
一篇干貨好文,輕松掌握python魔法方法
Python self用法詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服