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>>
'''