欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python self參數(shù)詳細介紹

 更新時間:2023年01月29日 16:07:11   作者:NOGE2022  
事實上,Python只是規(guī)定,無論是構(gòu)造方法還是實例方法,最少要包含一個參數(shù),并沒有規(guī)定該參數(shù)的具體名稱。之所以將其命名為self,只是程序員之間約定俗成的一種習慣,遵守這個約定,可以使我們編寫的代碼具有更好的可讀性

在定義類的過程中,無論是顯式創(chuàng)建類的構(gòu)造方法,還是向類中添加實例方法,都要求將 self 參數(shù)作為方法的第一個參數(shù)。例如,定義一個 Person 類:

class Person:
def__init__(self):
print("正在執(zhí)行構(gòu)造方法")
# 定義一個study()實例方法
defstudy(self,name):
print(name,"正在學Python")

那么,self 到底扮演著什么樣的角色呢?本節(jié)就對 self 參數(shù)做詳細的介紹。

事實上,Python 只是規(guī)定,無論是構(gòu)造方法還是實例方法,最少要包含一個參數(shù),并沒有規(guī)定該參數(shù)的具體名稱。之所以將其命名為 self,只是程序員之間約定俗成的一種習慣,遵守這個約定,可以使我們編寫的代碼具有更好的可讀性(大家一看到 self,就知道它的作用)。

那么,self 參數(shù)的具體作用是什么呢?打個比方,如果把類比作造房子的圖紙,那么類實例化后的對象是真正可以住的房子。根據(jù)一張圖紙(類),我們可以設(shè)計出成千上萬的房子(類對象),每個房子長相都是類似的(都有相同的類變量和類方法),但它們都有各自的主人,那么如何對它們進行區(qū)分呢?

當然是通過 self 參數(shù),它就相當于每個房子的門鑰匙,可以保證每個房子的主人僅能進入自己的房子(每個類對象只能調(diào)用自己的類變量和類方法)。

如果你接觸過其他面向?qū)ο蟮木幊陶Z言(例如 C++),其實 Python 類方法中的 self 參數(shù)就相當于 C++ 中的 this 指針。

也就是說,同一個類可以產(chǎn)生多個對象,當某個對象調(diào)用類方法時,該對象會把自身的引用作為第一個參數(shù)自動傳給該方法,換句話說,Python 會自動綁定類方法的第一個參數(shù)指向調(diào)用該方法的對象。如此,Python解釋器就能知道到底要操作哪個對象的方法了。

因此,程序在調(diào)用實例方法和構(gòu)造方法時,不需要手動為第一個參數(shù)傳值。例如,更改前面的 Person 類,如下所示:

class Person:
def__init__(self):
print("正在執(zhí)行構(gòu)造方法")
# 定義一個study()實例方法
defstudy(self):
print(self,"正在學Python")
zhangsan =Person()
zhangsan.study()
lisi =Person()
lisi.study()

上面代碼中,study() 中的 self 代表該方法的調(diào)用者,即誰調(diào)用該方法,那么 self 就代表誰。因此,該程序的運行結(jié)果為:

正在執(zhí)行構(gòu)造方法
<__main__.Person object at 0x0000021ADD7D21D0> 正在學Python
正在執(zhí)行構(gòu)造方法
<__main__.Person object at 0x0000021ADD7D2E48> 正在學Python

另外,對于構(gòu)造函數(shù)中的 self 參數(shù),其代表的是當前正在初始化的類對象。舉個例子:

class Person:
    name ="xxx"
def__init__(self,name):
        self.name=name
zhangsan =Person("zhangsan")
print(zhangsan.name)
lisi =Person("lisi")
print(lisi.name)

運行結(jié)果為:

zhangsan
lisi

可以看到,zhangsan 在進行初始化時,調(diào)用的構(gòu)造函數(shù)中 self 代表的是 zhangsan;而 lisi 在進行初始化時,調(diào)用的構(gòu)造函數(shù)中 self 代表的是 lisi。

值得一提的是,除了類對象可以直接調(diào)用類方法,還有一種函數(shù)調(diào)用的方式,例如:

class Person:
defwho(self):
print(self)
zhangsan =Person()
#第一種方式
zhangsan.who()
#第二種方式
who = zhangsan.who
who()#通過 who 變量調(diào)用zhangsan對象中的 who() 方法

運行結(jié)果為:

<__main__.Person object at 0x0000025C26F021D0>
<__main__.Person object at 0x0000025C26F021D0>

顯然,無論采用哪種方法,self 所表示的都是實際調(diào)用該方法的對象。

總之,無論是類中的構(gòu)造函數(shù)還是普通的類方法,實際調(diào)用它們的誰,則第一個參數(shù) self 就代表誰。

到此這篇關(guān)于Python self參數(shù)詳細介紹的文章就介紹到這了,更多相關(guān)Python self內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)抖音視頻批量下載

    python實現(xiàn)抖音視頻批量下載

    這篇文章主要為大家詳細介紹了python實現(xiàn)抖音視頻批量下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 詳解python實現(xiàn)識別手寫MNIST數(shù)字集的程序

    詳解python實現(xiàn)識別手寫MNIST數(shù)字集的程序

    這篇文章主要介紹了詳解python實現(xiàn)識別手寫MNIST數(shù)字集的程序,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • python數(shù)字圖像處理之圖像自動閾值分割示例

    python數(shù)字圖像處理之圖像自動閾值分割示例

    這篇文章主要為大家介紹了python數(shù)字圖像處理之圖像自動閾值分割示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 利用Python+Selenium破解春秋航空網(wǎng)滑塊驗證碼的實戰(zhàn)過程

    利用Python+Selenium破解春秋航空網(wǎng)滑塊驗證碼的實戰(zhàn)過程

    本文給大家介紹使用Python+Selenium破解春秋航空網(wǎng)滑塊驗證碼的實戰(zhàn)過程,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • python ipset管理 增刪白名單的方法

    python ipset管理 增刪白名單的方法

    今天小編就為大家分享一篇python ipset管理 增刪白名單的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 20非常有用的Python單行代碼分享

    20非常有用的Python單行代碼分享

    有用的 Python 單行代碼片段,只需一行代碼即可解決特定編碼問題!本文將分享20 個 Python 一行代碼,你可以在 30 秒或更短的時間內(nèi)輕松學習它們。這種單行代碼將節(jié)省你的時間,并使你的代碼看起來更干凈且易于閱讀
    2022-11-11
  • PyTorch中tensor.backward()函數(shù)的詳細介紹及功能實現(xiàn)

    PyTorch中tensor.backward()函數(shù)的詳細介紹及功能實現(xiàn)

    backward()?函數(shù)是PyTorch框架中自動求梯度功能的一部分,它負責執(zhí)行反向傳播算法以計算模型參數(shù)的梯度,這篇文章主要介紹了PyTorch中tensor.backward()函數(shù)的詳細介紹,需要的朋友可以參考下
    2024-02-02
  • Python連接mysql數(shù)據(jù)庫的正確姿勢

    Python連接mysql數(shù)據(jù)庫的正確姿勢

    這篇文章主要為大家詳細介紹了Python連接mysql數(shù)據(jù)庫的正確姿勢,如何使用Python連接mysql數(shù)據(jù)庫,本文為大家揭曉,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Python一鍵生成所有依賴包清單方法小結(jié)

    Python一鍵生成所有依賴包清單方法小結(jié)

    本文主要介紹了Python一鍵生成所有依賴包清單方法小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • python實戰(zhàn)練習之最新男女顏值打分小系統(tǒng)

    python實戰(zhàn)練習之最新男女顏值打分小系統(tǒng)

    前幾天不是出過一期Python美顏相機嘛?不知道大家現(xiàn)在還記不記得?這一期的話題還是緊接著那一期顏值方面來走,對大家的學習或工作具有一定的價值,需要的朋友可以參考下
    2021-09-09

最新評論