許多python初學(xué)者,在接觸到python面向?qū)ο蟮臅r候,就被類中包含的方法中的self打敗了,不知道self是何物?
既然寫在方法中,是必須參數(shù),為何在調(diào)用方法的時候不給它傳參數(shù)還能正常運行?和我們前面學(xué)的函數(shù)傳參這塊矛盾么?勇哥在這里給慢慢大家揭開self的神秘面紗。
首先我們看下如下代碼:
改進(jìn)上述代碼,我們來探索下self到底是個什么東西?大家應(yīng)該記得python中有一個id()內(nèi)置函數(shù),它可以返回指定變量在內(nèi)存中存放的地址。
Self既然作為show方法的形參,那我就可以在該方法內(nèi)部通過print打印,該形參變量在內(nèi)存中的存放位置;我們在類外創(chuàng)建的對象mytest,它其實也是一個變量,我也可以通過id函數(shù)打印給變量在內(nèi)存中的存放位置,改進(jìn)后的代碼執(zhí)行結(jié)果如下:
通過上圖,我們發(fā)現(xiàn)對象mytest變量的存放地址和self的內(nèi)存存放地址竟然是一樣的,這就意味它們代表的是一個東西,那就是mytest變量本身。當(dāng)系統(tǒng)在執(zhí)行mytest=test()的時候,python的解釋器會悄悄的幫我們把mytest實例變量傳給了self。所以后邊我們再調(diào)用該方法的時候,不需要再給該方法傳參數(shù)了。
另外類中的普通方法參數(shù)self必須寫在最前邊(即最左邊),self參數(shù)本身的名字可以修改,但是不推薦,因為大家都約定叫這個名字了,所以我們就跟著隨大流好了。對于接觸過其他編程語言的人來說,python中是self與C++和JAVA中類中的this關(guān)鍵字意義是一樣的。
因此self在方法中是必須(位置)參數(shù)沒錯,但是在創(chuàng)建對象或?qū)嵗哪且豢蹋琾ython解釋器就幫我們傳遞了當(dāng)前的對象給self了,所以我們再調(diào)用該方法的時候不需要在傳了。正是因為方法中有self,我們就可以在方法中對這個實例的屬性進(jìn)行操作了,記住self參數(shù)指向了當(dāng)前對象本身。
-
python
+關(guān)注
關(guān)注
56文章
4811瀏覽量
85081
發(fā)布評論請先 登錄
相關(guān)推薦
什么是MOSFET柵極氧化層?如何測試SiC碳化硅MOSFET的柵氧可靠性?
揭開觸控技術(shù)的神秘面紗
![<b class='flag-5'>揭開</b>觸控技術(shù)的<b class='flag-5'>神秘</b><b class='flag-5'>面紗</b>](https://file1.elecfans.com/web3/M00/00/66/wKgZO2dJHfOAG1QIAAAR-oAntkw269.jpg)
艾畢勝電子全自動跟拍智能云臺驅(qū)動板方案的神秘面紗
![艾畢勝電子全自動跟拍智能云臺驅(qū)動板方案的<b class='flag-5'>神秘</b><b class='flag-5'>面紗</b>](https://file1.elecfans.com//web2/M00/09/25/wKgZomcGTOiAAnQpAABPk-bBj1E952.jpg)
用智能DAC揭開醫(yī)療報警設(shè)計的神秘面紗
![用智能DAC<b class='flag-5'>揭開</b>醫(yī)療報警設(shè)計的<b class='flag-5'>神秘</b><b class='flag-5'>面紗</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
OpenAI宣布啟動GPT Next計劃
北斗衛(wèi)星時鐘——揭開“授時”的神秘面紗
![北斗衛(wèi)星時鐘——<b class='flag-5'>揭開</b>“授時”的<b class='flag-5'>神秘</b><b class='flag-5'>面紗</b>](https://file1.elecfans.com/web2/M00/FE/6F/wKgZomaiCpSAQWovAACH0bDFnX4749.png)
深入分析:常說的3H原則在PCB設(shè)計中的應(yīng)用
![深入分析:常說的3H原則在PCB設(shè)計<b class='flag-5'>中</b>的應(yīng)用](https://file1.elecfans.com//web2/M00/FD/85/wKgaomaU4o6ABmv1AADIDPlLINk633.png)
xAI公司將在八月揭開其新Grok-2大語言模型的神秘面紗
揭開Pluto XZU20的神秘面紗—探尋未來緊湊而強(qiáng)大的FPGA解決方案
![<b class='flag-5'>揭開</b>Pluto XZU20的<b class='flag-5'>神秘</b><b class='flag-5'>面紗</b>—探尋未來緊湊而強(qiáng)大的FPGA解決方案](https://file.elecfans.com/web2/M00/72/C1/poYBAGNXQoOAUojlAAA6Yo1bG0M913.jpg)
揭開快充芯片的神秘面紗
UFP芯片-揭開快充芯片的神秘面紗
![UFP芯片-<b class='flag-5'>揭開</b>快充芯片的<b class='flag-5'>神秘</b><b class='flag-5'>面紗</b>](https://file1.elecfans.com/web2/M00/91/3B/wKgaomTezjiAAI2wAAELqli0PYU538.png)
評論