国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python self用法詳解

瀏覽:29日期:2022-07-04 08:19:11

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

class Person: def __init__(self): print('正在執行構造方法') # 定義一個study()實例方法 def study(self): print(self,'正在學Python')zhangsan = Person()zhangsan.study()lisi = Person()lisi.study()

那么,self 到底扮演著什么樣的角色呢?接下來將對 self 參數做詳細的介紹。

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

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

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

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

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

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

class Person: def __init__(self): print('正在執行構造方法') # 定義一個study()實例方法 def study(self): print(self,'正在學Python')zhangsan = Person()zhangsan.study()lisi = Person()lisi.study()

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

正在執行構造方法<__main__.Person object at 0x0000021ADD7D21D0> 正在學Python正在執行構造方法<__main__.Person object at 0x0000021ADD7D2E48> 正在學Python

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

class Person: name = 'xxx' def __init__(self,name): self.name=name zhangsan = Person('zhangsan')print(zhangsan.name)lisi = Person('lisi')print(lisi.name)

運行結果為:

zhangsanlisi

可以看到,zhangsan 在進行初始化時,調用的構造函數中 self 代表的是 zhangsan;而 lisi 在進行初始化時,調用的構造函數中 self 代表的是 lisi。

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

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

運行結果為:

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

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

總之,無論是類中的構造函數還是普通的類方法,實際調用它們的誰,則第一個參數 self 就代表誰。

以上就是Python self用法詳解的詳細內容,更多關于Python self用法的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美操操操操 | 欧美videos性视频 | 中文字幕乱码视频32 | 欧美日韩a∨毛片一区 | 日韩一区二区三区在线播放 | 鲁丝一区二区三区不属 | 色悠久久久久综合网伊人男男 | 免费国产一级特黄久久 | 国产一区二区三区亚洲综合 | 日韩国产欧美在线观看一区二区 | 日本一区二区三区免费视频 | japanesetubesexfree| 免费一级特黄欧美大片久久网 | 国产性自拍 | 男女无遮掩做爰免费视频软件 | 成人免费毛片一区二区三区 | 国产一区二区三区四区在线观看 | 欧美一级毛级毛片 | 老少配性xxxxxx | 欧美成人性做爰网站免费 | 欧美一级色视频 | 最新精品亚洲成a人在线观看 | 中文精品视频一区二区在线观看 | 深夜国产| 国产精品久久人人做人人爽 | 91一区二区在线观看精品 | 久久国产精品二区99 | 欧美另类在线视频 | 一 级做人爱全视频在线看 一本不卡 | 一级国产| 欧美日韩在线视频播放 | 天堂中文字幕 | 欧美三级一级片 | 国产午夜爽爽窝窝在线观看 | 天天看片日本 | 精品日韩欧美一区二区三区在线播放 | 加勒比一本大道香蕉在线视频 | 国产成人十八黄网片 | 在线观看亚洲成人 | 久久久精品在线观看 | 女教师的一级毛片 |