首先明確的是self只有在類的方法中才會有,獨立的函數或方法是沒必要帶有self的。self在定義類的方法時是必須有的,雖然在調用時沒必要傳入相應的參數。python
self名稱不是必須的,在python中self不是關鍵詞,你能夠定義成a或b或其它名字均可以,可是約定成俗,不要搞另類,你們會不明白的。下例中將self改成myname同樣沒有錯誤:ide
''' 遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:857662006 尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書! ''' class Person: def _init_(myname,name): myname.name=name def sayhello(myname): print 'My name is:',myname.name p=Person('Bill') print p
self指的是類實例對象自己(注意:不是類自己)。函數
''' 遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:857662006 尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書! ''' 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 p=Person('Bill') p1 = Person('Apple') print p
若是self指向類自己,那麼當有多個實例對象時,self指向哪個呢?code
理解:爲何要穿一個實例對象給本身呢?我理解主要是爲了找到本身想調用的這個函數在哪,起一個指向做用,否則那麼多self究竟是哪一個呢?視頻
self的用法:對象
''' 遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:857662006 尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書! ''' class Cat: #屬性 #方法 def eat(self): print("貓在吃魚....") def drink(self): print("貓正在喝kele.....") def introduce(self): #print("%s的年齡是:%d"%(tom.name, tom.age)) print("%s的年齡是:%d"%(self.name, self.age)) #建立一個對象 tom = Cat() #調用tom指向的對象中的 方法 tom.eat() tom.drink() #給tom指向的對象添加2個屬性 tom.name = "湯姆" tom.age = 40 #獲取屬性的第1種方式 #print("%s的年齡是:%d"%(tom.name, tom.age)) tom.introduce()#至關於 tom.introduce(tom) lanmao = Cat() lanmao.name = "藍貓"# 至關於給類裏面添加了name的類屬性 lanmao.age = 10 # 添加了age的類屬性 lanmao.introduce()
結果:教程
D:\python3\python3.exe "E:/BaiduNetdiskDownload/Python01/Python-01/07-self.py" 貓在吃魚.... 貓正在喝kele..... 湯姆的年齡是:40 藍貓的年齡是:10