Python類中的self究竟是幹啥的

Python類中的self究竟是幹啥的

Python編寫類的時候,每一個函數參數第一個參數都是self,一開始我無論它究竟是幹嗎的,只知道必需要寫上。後來對Python漸漸熟悉了一點,再回頭看self的概念,彷佛有點弄明白了。python

首先明確的是self只有在類的方法中才會有,獨立的函數或方法是沒必要帶有self的。self在定義類的方法時是必須有的,雖然在調用時沒必要傳入相應的參數。編程

self名稱不是必須的,在python中self不是關鍵詞,你能夠定義成a或b或其它名字均可以,可是約定成俗(爲了和其餘編程語言統一,減小理解難度),不要搞另類,你們會不明白的。編程語言

下例中將self改成myname同樣沒有錯誤:函數

class Person:
    def _init_(myname,name):
        myname.name=name
    def sayhello(myname):
        print 'My name is:',myname.name
p=Person('Bill')
print p

self指的是類實例對象自己(注意:不是類自己)。code

class Person:
    def _init_(self,name):
        self.name=name
    def sayhello(self):
        print 'My name is:',self.name
p=Person('Bill')
print p

在上述例子中,self指向Person的實例p。 爲何不是指向類自己呢,以下例子:對象

class Person:
    def _init_(self,name):
        self.name=name
    def sayhello(self):
        print 'My name is:',self.name
p1=Person('Bill')
p2 = Person('Apple')
print p1

若是self指向類自己,那麼當有多個實例對象時,self指向哪個呢?it

總結class

self在定義時須要定義,可是在調用時會自動傳入。方法

self的名字並非規定死的,可是最好仍是按照約定是用self總結

self老是指調用時的類的實例。

相關文章
相關標籤/搜索