中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中self指的是什么

發布時間:2020-09-08 14:29:32 來源:億速云 閱讀:122 作者:小新 欄目:編程語言

這篇文章主要介紹了python中self指的是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

在學習如何定義類的過程中,無論是顯式創建類的構造方法,還是向類中添加實例方法,都要求將 self 參數作為方法的第一個參數。例如,定義如下 Dog 類:

class Dog:
    def __init__(self):
        print("正在執行構造方法")
    # 定義一個jump()實例方法
    def jump(self):
        print("正在執行jump方法")

Python 要求,類方法(構造方法和實例方法)中至少要包含一個參數,但并沒有規定此參數的名稱(完全可以叫任意參數名),之所以將類方法的第一個參數命名為 self,只是 Python 程序員約定俗成的一種習慣,這會使程序具有更好的可讀性。

那么,作為類方法的第一個參數,self 參數的具體作用是什么呢?打個比方,如果把類比作造房子的圖紙,那么對類實例化后的對象才是真正可以住的房子,根據一張圖紙,我們可以設計出成千上萬的房子,雖然每個房子長相相似,但它們都有各自的主人。而類方法的 self 參數,就相當于每個房子的門鑰匙,它可以保證,每個房子的主人僅能進入自己的房子。

如果你接觸過其他面向對象的編程語言(例如 C++),其實 Python 類方法中的 self 參數就相當于 C++ 中的 this 指針。

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

對于構造方法來說,self 參數(第一個參數)代表該構造方法正在初始化的對象。

因此,程序在調用實例方法和構造方法時,不需要為第一個參數傳值。例如,更改前面的 Dog 類,如下所示:

class Dog:
    def __init__(self):
        print(self,"在調用構造方法")
    # 定義一個jump()方法
    def jump(self):
        print(self,"正在執行jump方法")
    # 定義一個run()方法,run()方法需要借助jump()方法
    def run(self):
        print(self,"正在執行run方法")
        # 使用self參數引用調用run()方法的對象
        self.jump()
dog1 = Dog()
dog1.run()
dog2 = Dog()
dog2.run()

上面代碼中,jump() 和 run() 中的 self 代表該方法的調用者,即誰在調用該方法,那么 self 就代表誰,因此,該程序的運行結果為:

<__main__.Dog object at 0x00000276B14B12B0> 在調用構造方法
<__main__.Dog object at 0x00000276B14B12B0> 正在執行run方法
<__main__.Dog object at 0x00000276B14B12B0> 正在執行jump方法
<__main__.Dog object at 0x00000276B14B1F28> 在調用構造方法
<__main__.Dog object at 0x00000276B14B1F28> 正在執行run方法
<__main__.Dog object at 0x00000276B14B1F28> 正在執行jump方法

上面程序中值得一提的是,當一個 Dog 對象調用 run() 方法時,run() 方法需要依賴該對象自己的 jump() 方法。在現實世界里,對象的一個方法依賴另一個方法的情形很常見,例如,吃飯方法依賴拿筷子方法,寫程序方法依賴敲鍵盤方法,這種依賴都是同一個對象的兩個方法之間的依賴。

感謝你能夠認真閱讀完這篇文章,希望小編分享python中self指的是什么內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆元县| 宜良县| 阳新县| 建始县| 图木舒克市| 隆昌县| 美姑县| 石泉县| 宁阳县| 维西| 普兰县| 罗山县| 高淳县| 阳原县| 景谷| 嘉定区| 交口县| 阳西县| 涿鹿县| 信阳市| 天峻县| 蚌埠市| 云霄县| 武鸣县| 宁乡县| 山阳县| 都江堰市| 台东县| 霍州市| 鄂托克旗| 灌南县| 株洲市| 克山县| 泗洪县| 左云县| 辽宁省| 榆中县| 邛崃市| 泰和县| 镇安县| 德安县|