1. 程式人生 > >Python的學習之-類與物件

Python的學習之-類與物件

什麼是類

類即類別、種類,是面向物件設計最重要的概念,物件是特徵與技能的結合體,而類則是一系列物件相似的特徵與技能的結合體

在現實世界中:先有物件,再有類

世界上肯定是先出現各種各樣的實際存在的物體,然後隨著人類文明的發展,人類站在不同的角度總結出了不同的種類,如人類、動物類、植物類等概念

也就說,物件是具體的存在,而類僅僅只是一個概念,並不真實存在

在程式中:務必保證先定義類,後產生物件

這與函式的使用是類似的,先定義函式,後呼叫函式,類也是一樣的,在程式中需要先定義類,後呼叫類

不一樣的是,呼叫函式會執行函式體程式碼返回的是函式體執行的結果,而呼叫類會產生物件,返回的是物件

PS: 站的角度不同,定義出的類是截然不同的

PS:現實中的類並不完全等於程式中的類,比如現實中的公司類,在程式中有時需要拆分成部門類,業務類...... 

PS:有時為了程式設計需求,程式中也可能會定義現實中不存在的類,比如策略類,現實中並不存在,但是在程式中卻是一個很常見的類

 

類有兩種屬性:資料屬性和函式屬性

1. 類的資料屬性是所有物件共享的

類的資料屬性是所有物件共享的,id都一樣

print(id(OldboyStudent.school))

print(id(s1.school))

print(id(s2.school))

print(id(s3.school))

'''

4377347328

4377347328

4377347328

4377347328

'''

2. 類的函式屬性是繫結給物件用的

類的函式屬性是繫結給物件使用的,obj.method稱為繫結方法,記憶體地址都不一樣

ps:id是python的實現機制,並不能真實反映記憶體地址,如果有記憶體地址,還是以記憶體地址為準

print(OldboyStudent.learn)

print(s1.learn)

print(s2.learn)

print(s3.learn)

'''

<function OldboyStudent.learn at 0x1021329d8>

<bound method OldboyStudent.learn of <__main__.OldboyStudent object at 0x1021466d8>>

<bound method OldboyStudent.learn of <__main__.OldboyStudent object at 0x102146710>>

<bound method OldboyStudent.learn of <__main__.OldboyStudent object at 0x102146748>>

'''