成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

self方法如何在Python項(xiàng)目中使用-創(chuàng)新互聯(lián)

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

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、江北ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的江北網(wǎng)站制作公司

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

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

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

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

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

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



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


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

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

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

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

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

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

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

運(yùn)行結(jié)果為:

zhangsan
lisi

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

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

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

運(yùn)行結(jié)果為:

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

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

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

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。

網(wǎng)頁名稱:self方法如何在Python項(xiàng)目中使用-創(chuàng)新互聯(lián)
瀏覽地址:http://jinyejixie.com/article42/dieoec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站策劃、營銷型網(wǎng)站建設(shè)響應(yīng)式網(wǎng)站、微信公眾號(hào)、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
长乐市| 永和县| 安乡县| 库尔勒市| 卢龙县| 南澳县| 茂名市| 南澳县| 临武县| 赤壁市| 府谷县| 家居| 汪清县| 德惠市| 赤城县| 桑日县| 神农架林区| 桑日县| 富阳市| 新沂市| 桂平市| 大名县| 龙泉市| 南昌县| 白河县| 海林市| 临澧县| 绿春县| 福海县| 樟树市| 花垣县| 耒阳市| 阳朔县| 阳东县| 古丈县| 郸城县| 光泽县| 昆山市| 灵石县| 康乐县| 汉寿县|