上面的例子中,Person是一個類,_init_是一個特殊的方法(init是單詞初始化initialization的省略形式),在使用類創建對象之后被執行,用於給新創建的對象初始化屬性用。
self.name = name 就是初始化屬性的語句
_init_是一個方法,這個方法里面有三個形參self、name、age。self表示對象本身,誰調用就表示誰。
這里self.name = name 和 self.age = age表示將外部傳來的name 和 age,賦值給了self 對象的name和age屬性。
下面是創建對象:P = Person('小明',20) ---------這句話就創建出來了一個具體的人,並且給這個人起了個名字叫小明,指定了小明的年齡為20,並且將小明這個對象賦值給了變量p,此時p就表示小明這個人(對象)。
這句話就代表,創造了一個人對象(小明),並調用了 init(self,name,age) 方法完成了該人的屬性的初始化,小明賦值給name,20賦值給age屬性。
而self是不需要傳參的,因為slef表示對象本身,誰調用就表示誰,此時的self就表示Person('小明',20),也就是P。
也就是,我們創造出了p,然后給p的屬性賦了值,此時p就表示擁有屬性值之后的那個人。
可以使用點.
來調用對象的屬性,比如輸出p的名字和年齡,完整代碼為:
例子:
接下來我們再在Person類中定義一個方法,用於自我介紹:
def desc(self):
print("我叫%s,今年%d歲" % (self.name, self.age))
在類的內部,訪問自己的屬性和方法,都需要通過self,self就是外部對象在類內部的表示,此時可以使用p調用該方法,完整代碼如下:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def desc(self):
print("我叫%s,今年%d歲" % (self.name, self.age))
p = Person('傑拉考', 200)
# 調用自我介紹方法 desc方法中的self就是外部的這個p
p.desc()
輸出為:
我叫傑拉考,今年200歲
當前desc方法中的self,就是外部的那個對象p,如果我再定義了一個對象p2,那么p2調用desc時,desc中的self就表示p2這個對象。正所謂:誰調用,就表示誰