类成员_月隐学python第17课
目錄
1.類成員
2 實例成員的動態綁定
3. 系統魔術?法
3.1 __init__ 和 __new__
3.2 算數運算符重載
3.3 迭代器
3.4 __call__
4.單例設計模式
4.1、設計模式概述
4.2 單例
4.3 實現
面向對象練習題
?
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.代碼補?
?
總結
以上是生活随笔為你收集整理的类成员_月隐学python第17课的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于webstorm 配置 banbel
- 下一篇: 多态_月隐学python第18课