1.類的私有化
1.私有化 - 讓屬性和方法只能在類的內部使用,不能再類的外部使用
1)語法:
聲明屬性或者方法的時候,在屬性名或者方法名前面加'__'
- python私有化的原理
python 沒有真的私有屬性和方法
只是在名字前面加前綴,'_類名',導致不能直接通過原名訪問
2.對象屬性的保護: 不要直接訪問或者修改對象屬性的值,而是通過屬性訪問器(getter)和修改器(setter)去操作對象屬性
需要添加getter或者setter的對象屬性,屬性命名的時候需要在最前面加''。
(添加''的目的是為了告訴使用者,這個屬性我給它添加了getter或者setter)
1)getter - 獲取屬性的值(間接)
a.語法:
@property
def 函數(shù)名(self):
其他語句
return 屬性值
2)setter - 給屬性賦值(間接)
想要添加setter必須先添加getter
a.語法:
@getter名.setter
def 函數(shù)名(self, 參數(shù)):
其他語句
self.屬性 = 值
3.類中的方法: 對象方法、類方法、靜態(tài)方法
1)對象方法
a.怎么聲明: 直接聲明在類中
b.特點: 有默認參數(shù)self;調用的時候不用傳參,指向當前對象
c.怎么調用: 通過對象來調用(對象.對象方法())
d.什么時候使用: 如果實現(xiàn)函數(shù)的功能,需要使用對象屬性,就用對象方法
2)類方法
a.怎么聲明: 聲明函數(shù)前添加@classmethod裝飾器
b.特點: 有默認參數(shù)cls; 調用的時候不用傳參, 系統(tǒng)將調用這個方法的類傳給它,指向當前類
c.怎么調用: 通過類來調用
d.什么時候使用: 在不需要對象屬性的前提下,需要類的字段,就使用類方法
3)靜態(tài)方法
a.怎么聲明:聲明前添加@staticmethod裝飾器
b.特點: 沒有默認參數(shù)
c.怎么調用: 通過類來調用
d.什么時候使用: 既不需要對象屬性也不需要類的字段,就使用靜態(tài)方法
4.繼承
繼承 - 讓子類直接擁有父類的屬性和方法
1)語法:
class 類名(父類):
類的內容
5.在子類中添加內容
1)在子類中添加字段和方法
直接在子類中聲明新的字段和方法
2)添加對象屬性
在子類中實現(xiàn)init方法,并且添加新屬性。同時需要通過super().init()去調用父類的init方法
6.重寫
在子類中重新實現(xiàn)父類的函數(shù); 可以通過super()去調用父類中的方法。
注意: super()不能在靜態(tài)方法中使用,只能在對象方法和類方法中用