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