Python3學習系列(1)——函數中self參數的作用

聲明:本篇博客轉自Python類中的self到底是幹啥的如有侵權,請聯繫作者刪除! 

Python編寫的時候,每個函數參數第一個參數都是self,一開始我不管它到底是幹嘛的,只知道必須要寫上。後來對Python漸漸熟悉了一點,再回頭看self的概念,似乎有點弄明白了。

何時使用self?

self只有在類的方法中才會有獨立的函數或方法是不必帶有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指的是類實例對象本身(注意:不是類本身)

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指向哪一個呢?

總結

  • self在定義時需要定義,但是在調用時會自動傳入。
  • self的名字並不是規定死的,但是最好還是按照約定使用self
  • self總是指向調用時的類的實例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章