python類的理解與使用
1. 通俗理解類
類(英文名 class),是具有相同特性(屬性)和行為(方法)的對(duì)象(實(shí)例)的抽象模板。
從定義上來(lái)理解類,是一件非常吃力的事情,特別是對(duì)那些沒(méi)有任何基礎(chǔ)的初學(xué)者。
下面我舉例來(lái)說(shuō)明類中一些關(guān)鍵術(shù)語(yǔ)都是什么意思:
類:動(dòng)物屬于一個(gè)類,植物屬于一個(gè)類
實(shí)例:貓和狗都屬于同一類,就是動(dòng)物類,那么貓和狗是動(dòng)物類的實(shí)例/對(duì)象。
屬性:類中所有的變量,都叫做屬性。
方法:類中的所有函數(shù),都叫做方法。
類與對(duì)象的關(guān)系就如模具和鑄件的關(guān)系,類的實(shí)例化的結(jié)果就是對(duì)象,而對(duì)象的抽象就是類,類描述了一組有相同特性(屬性)和相同行為(方法)的對(duì)象。
2. 如何定義類?
定義一個(gè)類,使用的是 class 關(guān)鍵字
下邊我定義了一個(gè) Animal 的類
class Animal:
age = 0
def __init__(self, name):
self.name = name
def run(self):
print(f"{self.name} 跑起來(lái)了")
其中
Animal
是類名
__init__
是構(gòu)造函數(shù),用于實(shí)例的初始化
self.name
是實(shí)例屬性,age
是類屬性
run
是方法,第一個(gè)參數(shù) self 是什么意思呢?這個(gè)咱后面再講。
除了上面這種寫法外
# 第一種寫法
class Animal:
...
還有另外兩種寫法,與之是等價(jià)的
# 第二種寫法
class Animal():
...
# 第二種寫法
class Animal(object):
...
因?yàn)樵?Python 3 中,無(wú)論你是否顯示繼承自 object,Python 解釋器都會(huì)默認(rèn)你繼承 object ,這是新式類的寫法,與之對(duì)應(yīng)的是 Python 2 的經(jīng)典類寫法。
3. 如何實(shí)例化?
定義了類之后,就可以通過(guò)下邊的寫法實(shí)例化它,并訪問(wèn)屬性,調(diào)用方法
>>> class Animal:
... def __init__(self, name):
... self.name = name
... def run(self):
... print(f"{self.name} 跑起來(lái)了")
...
>>>
>>> dog=Animal(name="小黑") # 實(shí)例化出 dog 對(duì)象
在實(shí)例化時(shí)傳入的參數(shù) name="小黑"
傳進(jìn)入到構(gòu)造函數(shù) __init__
中,最終賦值 self.name
成為實(shí)例的屬性。
4. 方法的調(diào)用
實(shí)例化成對(duì)象后,如果訪問(wèn)實(shí)例屬性,可以用 對(duì)象.屬性名
進(jìn)行訪問(wèn)。
>>> dog=Animal(name="小黑")
>>> dog.name # 訪問(wèn)屬性
'小黑'
如果要調(diào)用方法,有兩種方法
通過(guò) 對(duì)象.方法名
:使用這種方法,在定義方法時(shí) self 就代表對(duì)象(dog),調(diào)用時(shí)無(wú)需再傳入了。
>>> dog=Animal(name="小黑")
>>> dog.run() # 調(diào)用方法
小黑 跑起來(lái)了
通過(guò) 類.方法名
:使用這種方法,self 參數(shù)要傳入實(shí)例對(duì)象
>>> dog=Animal(name="小黑")
>>> Animal.run(dog)
小黑 跑起來(lái)了
審核編輯:符乾江
-
面向?qū)ο?/span>
+關(guān)注
關(guān)注
0文章
64瀏覽量
9994 -
python
+關(guān)注
關(guān)注
56文章
4801瀏覽量
84865
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論