深刻理解python之self

首先明確的是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
相關文章
相關標籤/搜索