python編寫類的時候,每個函式引數第乙個引數都是self,一開始我不管它到底是幹嘛的,只知道必須要寫上。後來對python漸漸熟悉了一點,再回頭看self的概念,似乎有點弄明白了。
首先明確的是self只有在類的方法中才會有,獨立的函式或方法是不必帶有self的。self在定義類的方法時是必須有的,雖然在呼叫時不必傳入相應的引數。
self名稱不是必須的,在python中self不是關鍵詞,你可以定義成a或b或其它名字都可以,但是約定成俗(為了和其他程式語言統一,減少理解難度),不要搞另類,大家會不明白的。
程式設計客棧下例中將self改為myname一樣沒有錯誤:
class person:
def __
myname.name=name
def sayhello(myname):
print ('my name is:',myname.name)
p=person('aoteman'www.cppcns.com)
print(p)
self指的是類例項物件程式設計客棧本身(注意:不是類本身)。
class person:
def __init__(self,name):
self.name=name
def sayhello(self):
print ('my name is:',self.name)
p=person('aoteman')
print(p)
在上述例子中,self指向person的例項p。 為什麼不是指向類本身呢,如下lhycio例子:
class person:
def __init__(self,name):
self.name=name
def sayhello(self):
print ('my name is:',self.name)
p1 = person('aoteman')
p2 = person('xiaoyiyi')
print(p1)
如果self指向類本身,那麼當有多個例項物件時,self指向哪乙個呢?
總結self在定義時需要定義,但是在呼叫時會自動傳入。
self的名字並不是規定死的,但是最好還是按照約定是用self
Python類class引數self原理解析
1.self只有在類的方法中才會有,其他函式或方法是不必帶self的。2.在呼叫時不必傳入相應的引數。3.在類的方法中 如 init 第一引數永遠是self,表示建立的類例項本身,而不是類本身。4.可以把物件的各種屬性繫結到self。5.self代表當前物件的位址。self能避免非限定呼叫造成的全域...
python類中的self引數和cls引數
1.self表示乙個類的例項物件本身。如果用了staticmethod就無視這個self了,就將這個方法當成乙個普通的函式使用了。2.cls表是這個類本身。為證 class a object deffunc1 self print func1 self staticmethod deffunc2 p...
python類中的self引數和cls引數
1.self表示乙個類的例項物件本身。如果用了staticmethod就無視這個self了,就將這個方法當成乙個普通的函式使用了。2.cls表是這個類本身。為證 class a object deffunc1 self print func1 self staticmethod deffunc2 p...