關(guān)于對(duì)python中self的深入理解
假設(shè)有一個(gè)類nameMain(), 如最下面代碼
- 類 : 一個(gè)抽象的模板??梢岳斫鉃槌橄笤O(shè)計(jì)圖
- 類名:類的名字。
查看/實(shí)現(xiàn)方式 :print(nameMain)或者print(self.class) - 類的實(shí)例:即類創(chuàng)建的對(duì)象,類每創(chuàng)建一個(gè)實(shí)例就開辟新的內(nèi)存地址指向這個(gè)創(chuàng)建的實(shí)例。抽象設(shè)計(jì)圖具體實(shí)現(xiàn)的東西
查看/實(shí)現(xiàn)方式 : a=nameMain(帶參/無(wú)參) - self : 表示類創(chuàng)建的實(shí)例/對(duì)象本身,指向當(dāng)前創(chuàng)建對(duì)象的內(nèi)存地址。在__init__魔方方法中創(chuàng)建
類可以創(chuàng)建很多不同的實(shí)例,這些實(shí)例又有自己特定的特征,如何很好的調(diào)用和匹配好 所創(chuàng)建的實(shí)例對(duì)象 及其特征 就需要self。
理解:
例如 :類中創(chuàng)建了對(duì)象a和對(duì)象b, self對(duì)象就是a和b對(duì)象的抽象的統(tǒng)稱,關(guān)于對(duì)象a和對(duì)象b的特征,可以用self來(lái)調(diào)用,當(dāng)self指向a時(shí)就指向a的內(nèi)存地址,可以調(diào)用a的特征;同理self指向?qū)ο骲就指向b的內(nèi)存地址,就可以調(diào)用b的特征。
比如 : 可以把 對(duì)象a 和 對(duì)象b 理解成 客戶a 和 客戶b, 類理解為某個(gè)房子。這時(shí)候客戶a和客戶b都買了同一個(gè)設(shè)計(jì)圖出的房子,但是他們想要自己的裝修風(fēng)格,這些裝修風(fēng)格就是對(duì)象a、對(duì)象b的特征。當(dāng)裝修隊(duì)開始裝修房子時(shí),先選擇具體客戶,然后根據(jù)客戶要求裝修;而先服務(wù)哪個(gè)客戶呢?客戶就選擇self客戶管理工具指向的現(xiàn)在的客戶,同時(shí)self還可以調(diào)用對(duì)象的特征,這時(shí)候根據(jù)self指示的客戶和self調(diào)用客戶要求的裝修風(fēng)格來(lái)裝修房子。
- 客戶a=類的對(duì)象a;
- (客戶要求的)裝修風(fēng)格=對(duì)象a/b的特征;
- 房型=類 裝修隊(duì)=代碼的執(zhí)行
具體代碼:
""" self的理解 : 1, self表示類的實(shí)例 或 對(duì)象, 指向當(dāng)前對(duì)象的內(nèi)存地址 (self不指向類本身,而是類創(chuàng)建的實(shí)例/對(duì)象) 2, 類中定義的函數(shù)的self 與 init中self的內(nèi)存地址 + 創(chuàng)建實(shí)例的內(nèi)存地址 保持一致(都指向同一個(gè)內(nèi)存地址) 3, self.__class__ 用來(lái)查看當(dāng)前類名,相當(dāng)于print(nameMain) """ class nameMain(object): def __init__(self, name, age): print("init中的self={}".format(self)) print("self.__class__用于查看當(dāng)前類名 : ", self.__class__) self.name = name self.age = age def printStu(self): print("def中的self={}".format(self)) return "name={}, age={}".format(self.name, self.age) if __name__ == "__main__": a = nameMain("immuable", 18) print("a = {}".format(a)) # self 打印地址=對(duì)象a的地址 print(a.printStu()) print() b=nameMain("muable", 100) # self 打印地址=對(duì)象b的地址 print("b = {}".format(b)) print(b.printStu())
輸出
# 對(duì)象a init中的self=<__main__.nameMain object at 0x0000022E78A2F8D0> self.__class__用于查看當(dāng)前類名 : ?<class '__main__.nameMain'> a = <__main__.nameMain object at 0x0000022E78A2F8D0> def中的self=<__main__.nameMain object at 0x0000022E78A2F8D0> name=immuable, age=18 #對(duì)象b init中的self=<__main__.nameMain object at 0x0000022E78A2F828> self.__class__用于查看當(dāng)前類名 : ?<class '__main__.nameMain'> b = <__main__.nameMain object at 0x0000022E78A2F828> def中的self=<__main__.nameMain object at 0x0000022E78A2F828> name=muable, age=100
self的值是什么?
self的值是Python會(huì)自動(dòng)賦值的,而且值是對(duì)象本身。舉例說(shuō)明:類Dog,他的實(shí)例是d,那么,d調(diào)用類的方法jian(arge1,arge2)的時(shí)候,Python會(huì)自動(dòng)轉(zhuǎn)為Dog.jian(d,arge1,arge2)。self的值是Dog的實(shí)例d。
以下例子,打印self的值。(打印結(jié)果中的intance是實(shí)例的意思)
總結(jié)
到此這篇關(guān)于對(duì)python中self的深入理解的文章就介紹到這了,更多相關(guān)python中self理解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python numpy數(shù)組復(fù)制使用實(shí)例解析
這篇文章主要介紹了python numpy數(shù)組復(fù)制使用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01python實(shí)現(xiàn)漫天飄落的七彩花朵效果
要實(shí)現(xiàn)漫天飄落的七彩花朵效果,你可以使用Python的圖形庫(kù),如Pygame或Pyglet,這些庫(kù)可以幫助你創(chuàng)建動(dòng)畫和圖形效果,本文給大家介紹了如何使用python實(shí)現(xiàn)漫天飄落的七彩花朵效果,感興趣的朋友可以參考下2024-01-01pytorch 在sequential中使用view來(lái)reshape的例子
今天小編就為大家分享一篇pytorch 在sequential中使用view來(lái)reshape的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-08-08OpenCV(python)版實(shí)現(xiàn)文本分割之水平投影法
本文主要介紹了OpenCV(python)版實(shí)現(xiàn)文本分割之水平投影法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Python selenium模塊實(shí)現(xiàn)定位過程解析
這篇文章主要介紹了python selenium模塊實(shí)現(xiàn)定位過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07django如何計(jì)算兩個(gè)TimeField的時(shí)差
在Django中,可以使用datetime模塊來(lái)計(jì)算兩個(gè)TimeField字段的時(shí)間差,下面通過示例代碼介紹django?計(jì)算兩個(gè)TimeField的時(shí)差,需要的朋友可以參考下2023-05-05Python自動(dòng)巡檢H3C交換機(jī)實(shí)現(xiàn)過程解析
這篇文章主要介紹了Python自動(dòng)巡檢H3C交換機(jī)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08