- 論壇徽章:
- 0
|
《簡明python教程》對self的用法介紹如下:
類的方法與普通的函數(shù)只有一個特別的區(qū)別——它們必須有一個額外的第一個參數(shù)名稱,但是在調(diào)用這個方法的時候你不為這個參數(shù)賦值,Python會提供這個值。這個特別的變量指對象本身,按照慣例它的名稱是self。
雖然你可以給這個參數(shù)任何名稱,但是 強烈建議 你使用self這個名稱——其他名稱都是不贊成你使用的。使用一個標準的名稱有很多優(yōu)點——你的程序讀者可以迅速識別它,如果使用self的話,還有些IDE(集成開發(fā)環(huán)境)也可以幫助你。
=======================================================
給C++/Java/C#程序員的注釋
Python中的self等價于C++中的self指針和Java、C#中的this參考。
=======================================================
你一定很奇怪Python如何給self賦值以及為何你不需要給它賦值。舉一個例子會使此變得清晰。假如你有一個類稱為MyClass和這個類的一個實例MyObject。當你調(diào)用這個對象的方法MyObject.method(arg1, arg2)的時候,這會由Python自動轉(zhuǎn)為MyClass.method(MyObject, arg1, arg2)——這就是self的原理了。
這也意味著如果你有一個不需要參數(shù)的方法,你還是得給這個方法定義一個self參數(shù)。
我這里補充一下幾個實例程序以加深理解:
class Person:
def sayHi(self):
print 'Hello,how are you?'
p=Person()
p.sayHi()
結(jié)果顯示為:
Hello,how are you?
改一下:
class Person:
def sayHi(self):
print 'Hello,how are you?'
p=Person()
Person.sayHi(p)
結(jié)是同上!
再改一下:(去掉self,會怎么樣呢?)
class Person:
def sayHi():
print 'Hello,how are you?'
p=Person()
Person.sayHi(p)
p.sayHi()
出現(xiàn)如下錯誤信息:
Traceback (most recent call last):
File "C:\pro\Person2.py", line 5, in ?
Person.sayHi(p)
TypeError: sayHi() takes no arguments (1 given)
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/17118/showart_96896.html |
|