python中的self,究竟是什麼角色?python
1. 首先明確的是self只有在類的方法中才會有,獨立的函數或方法是沒必要帶有self的。self在定義類的方法時是必須有的,雖然在調用時沒必要傳入相應的參數。ide
2. self名稱不是必須的,在python中self不是關鍵詞,你能夠定義成a或b或其它名字均可以,可是約定成俗,不要搞另類,你們會不明白的。下例中將self改成myname同樣沒有錯誤:函數
[root@leco day8]# cat t1.py class Person: def __init__(myname,name): myname.name = name def sayhello(myname): print 'My name is:',myname.name p=Person('Bill') p.sayhello() [root@leco day8]# python t1.py My name is: Bill
self指的是類實例對象自己(注意:不是類自己)。對象
[root@leco day8]# cat t2.py it
#!/usr/bin/env python class Person: def __init__(self,name): self.name = name def sayhello(self): print 'My name is:',self.name p=Person('Bill') p.sayhello()
在上述例子中,self指向Person的實例p。 爲何不是指向類自己呢,以下例子:class
[root@leco day8]# cat t3.py 方法
#!/usr/bin/env python class Person: def __init__(self,name): self.name = name def sayhello(self): print 'My name is:',self.name p=Person('Bill') p1=Person('Jack') p.sayhello() p1.sayhello() [root@leco day8]# python t3.py My name is: Bill My name is: Jack
若是self指向類自己,那麼當有多個實例對象時,self指向哪個呢?di