類成員_月隱學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.代碼補⻬

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章