python self什麼意思

(*-*)浩
發布: 2020-09-18 13:48:00
原創
37372 人瀏覽過

self的意思是“自身”,python中代表類別的實例,而非類別。 self只有在類別的方法中才會有,獨立的函數或方法是不必帶有self的;self在定義類別的方法時是必須有的。 self名稱不是必須的,你可以定義成a或b或其它名字都可以,但是約定成俗,可減少理解難度。

python self什麼意思

首先我們要搞清楚Python的類別中為要什麼要用到self這個單字呢,為什麼不用"zhangsan"、"lisi"這樣的名字呢,這肯定有他的用意。

self代表類別的實例,而非類別。

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()
登入後複製

執行結果如下:

<__main__.Test object at 0x000000000284E080>
<class &#39;__main__.Test&#39;>
登入後複製

從上面的例子可以很明顯的看出,self代表的是類別的實例。而self.class則指向類別。

類別中的方法第一個參數必須是self ,不然實例無法正確呼叫類別中的方法,也就是說,如果方法中第一個參數不是self(廣義的),那麼這個方法是沒有任何價值的,因為實例無法呼叫它,一個無法被呼叫的方法真不知道有什麼用。

注意:把self換成this,結果也一樣,但Python中最好用約定俗成的self。 

繼承時,傳入的是哪個實例,就是那個傳入的實例,而不是指定義了self的類別的實例。

class Parent:
    def pprt(self):
        print(self)
 
class Child(Parent):
    def cprt(self):
        print(self)
c = Child()
c.cprt()
c.pprt()
p = Parent()
p.pprt()
登入後複製

運行結果如下:

<__main__.Child object at 0x0000000002A47080>
<__main__.Child object at 0x0000000002A47080>
<__main__.Parent object at 0x0000000002A47240>
登入後複製

解釋:

#執行c.cprt()時應該沒有理解問題,指的是Child類別的實例。

但是在執行c.pprt()時,等同於Child.pprt(c),所以self指的依然是Child類別的實例,由於self中沒有定義pprt()方法,所以沿著繼承樹往上找,發現在父類別Parent中定義了pprt()方法,所以就會成功呼叫

以上是python self什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板