91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

self方法如何在Python項目中使用

發布時間:2020-11-30 15:31:54 來源:億速云 閱讀:145 作者:Leah 欄目:開發技術

self方法如何在Python項目中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

在定義類的過程中,無論是顯式創建類的構造方法,還是向類中添加實例方法,都要求將 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)

運行結果為:

zhangsan
lisi

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

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

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

運行結果為:

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

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

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

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

AI

米易县| 于田县| 木里| 曲沃县| 凤阳县| 泸州市| 荣昌县| 岑巩县| 南江县| 如东县| 依安县| 镇沅| 新蔡县| 金山区| 达日县| 苍山县| 二手房| 沁阳市| 保定市| 湘阴县| 循化| 遵义市| 昌图县| 公安县| 仁寿县| 庄浪县| 青河县| 裕民县| 南投市| 银川市| 合作市| 边坝县| 灵山县| 马鞍山市| 开封县| 萍乡市| 平顺县| 剑川县| 丽水市| 青浦区| 遂溪县|