目錄
1.類成員
類成員包括:類屬性和類⽅法,不同於成員屬性和成員⽅法屬於對象,類屬性和類⽅法屬於類,可以不實例化對象,直接通過類名調⽤,這些類成員爲所有對象共有,⼀般⽤於對象間通信。
- 在程序運⾏期間類屬性始終存在
- 類屬性
類⽅法和靜態⽅法
- 類⽅法屬於類,爲所有對象共有,可以通過類名或對象調⽤
- 類⽅法可以⽤來訪問類屬性
- 靜態⽅法屬於類的作⽤域內的全局函數
- 類⽅法和靜態⽅法的區別,類⽅法第⼀個參數是類對象,由系統傳⼊,靜態⽅法沒有
- 共同點:靜態⽅法和類⽅法都可以通過類名直接調⽤,屬於類,不屬於對象
2 實例成員的動態綁定
實例的屬性和⽅法都可以動態綁定,也就是可以在程序運⾏期間可以給程序增加功能,這對於那些靜態語⾔來說⽆異於天⽅夜譚,但對python來說⼀切皆有可能
- 給對象動態添加的屬性只屬於這個對象,其它對象沒有該屬性
- 使⽤__ slots__限制屬性的動態綁定:
3. 系統魔術⽅法
3.1 __init__ 和 __new__
- __ new__ ⽤於創建⼀個對象,有返回值; __new__ 是類⽅法;__ init__ ⽤於初始化對象,沒有返回值
- __new__ 默認參數是cls,系統傳遞的是類名, __init__ 默認參數是self,系統傳遞的是當前對象
- __ new__ 先於__ init__ 執⾏
3.2 算數運算符重載
在python中⾃定義類的對象也可以象系統類型⼀樣完成+、 -、 *、 /、索引、切⽚等運算,這有賴於python類有運算符重載功能
3.3 迭代器
如果想讓⼀個類⽤於for-in 循環則必須實現__ iter__ 和__ next__ ⽅法
3.4 __call__
如果⼀個類實現了 __call__(slef, [,*args [,**kwargs]]) ⽅法,則該類的對象可以象函數⼀樣調⽤。它是實現類裝飾器的基礎
4.單例設計模式
4.1、設計模式概述
1. 概念:對特定問題的⼀種解決⽅案,和平臺、語⾔⽆關
2. 作⽤
- 更好的理解⾯向對象
- 讓你的代碼更加優雅
- 使你的代碼更加容易擴展和復⽤
- ⾯試時候的重點
設計模式的⼀些基本原則
- ⾼內聚,低耦合
- 單⼀職責
- 開閉原則(對修改封閉、對擴展開放)
4.2 單例
所謂單例也就是⼀個類只⽣成⼀個對象,⽆論你實例化多少對象,都是同⼀個對象
應⽤場景:數據庫操作類,⽂件操作類等,可以減少資源的佔⽤
4.3 實現
使⽤ __new__
面向對象練習題
1.⾯向對象的三大特徵是:封裝、繼承、多態
2.代碼補齊:
3.代碼改錯,並說明原因
4.以下代碼輸出什麼
5.代碼改正:
6.代碼補⻬