1.第一個python類(創建類)
創建類之前需要先設計類
類名:見名知意,首字母大寫,其他遵循駝峯原則
屬性:見名知意,遵循駝峯原則
行爲(方法/功能):見名知意,遵循駝峯原則
類名:Car
屬性:color、type
行爲:run
類名:person
屬性:height、weight、age、name
行爲:eat、run
設計好之後創建類
類:是一種數據類型,本身並不佔內存空間,跟所學過的number、string、boolean等類似。用類創建實例化對象(變量),對象佔內存空間
格式:
class 類名(父類列表):
(空格)屬性
(空格)行爲
2.使用類實例化對象
格式:
對象名=類名(參數列表)
注意:沒有參數,小括號也不能省略
3.訪問對象的屬性與方法
訪問對象的屬性:
格式:對象名.屬性名
賦值:對象名.屬性名=新值
訪問方法:
格式:對象名.方法名(參數列表)
4.對象的初始狀態(構造函數)
構造函數:init()在使用類創建對象時自動調用
注意:如果不顯示的寫出構造函數,默認會自動添加一個空的構造函數
5.self
(self不是關鍵字,換成其他標識符也是可以的,但是一般都使用self)
- self代表類的實例而非類
- 哪個對象調用方法,那麼該方法中的self就代表哪個對象
- self.class 代表類名
6.析構函數
析構函數:del() 釋放對象時自動調用
在函數裏定義的對象在函數結束時自動釋放,這樣可以用來減少內存空間的浪費
7.重寫__repr__與__str__函數
重寫:將函數重新定義寫一遍
str():在調用print打印對象時自動調用,是給用戶用的,是一個描述對象的方法
repr():是給機器用的,在python解釋器裏邊直接敲對象名在回車後調用的方法
注意:在沒有__str__且有__repe__時,str=repr
優點:當一個對象的屬性值很多,而且都需要打印時,重寫了__str__方法後簡化了代碼
8.訪問限制
如果要讓內部的屬性不被外部直接訪問,就在屬性前加兩個下劃線(__)。在python中如果在屬性前加兩個下劃線,那麼這個屬性就變成了私有屬性
當直接訪問money時會報錯是因爲python解釋器把__money變成了_Person__money,仍然可以用_Person__money去訪問,但是一般不建議使用。不同的解釋器可能存在的解釋變量名不一致
在python中__XXX__屬於特殊變量,可以直接訪問
在python中,_XX 變量,這樣的實例變量外部是可以訪問的,但是按照約定的規則,當我們看到這樣的變量時,意思是“雖然我可以被訪問,但是請把我視爲私有變量,不要直接訪問我”
9.繼承
繼承:假設有兩個類,A類和B類,當我們說A類繼承自B類的時候,那麼A類就擁有了B類中的所有屬性和方法
注意:繼承者稱爲子類,被繼承者稱爲父類
繼承的作用(優點):
(1)簡化了代碼,減少了冗餘
(2)提高了代碼的健壯性
(3)提高了代碼的安全性
(4)是多態的前提
缺點:
耦合與內聚是描述類與類之間的關係的,耦合性越低,內聚性越高代碼越好,但是繼承的耦合性較高
單繼承的實現
父類:Person
子類:Student和Worker
實現:
子類可以有一些獨立的屬性(例如學生的學號)