天天看點

Python 進階_OOP 面向對象程式設計_靜态方法和類方法目錄靜态方法類方法使用函數修飾符來聲明靜态方法和類方法

<a href="#%E7%9B%AE%E5%BD%95">目錄</a>

<a href="#%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95">靜态方法</a>

<a href="#%E7%B1%BB%E6%96%B9%E6%B3%95">類方法</a>

<a href="#%E4%BD%BF%E7%94%A8%E5%87%BD%E6%95%B0%E4%BF%AE%E9%A5%B0%E7%AC%A6%E6%9D%A5%E5%A3%B0%E6%98%8E%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95%E5%92%8C%E7%B1%BB%E6%96%B9%E6%B3%95">使用函數修飾符來聲明靜态方法和類方法</a>

靜态方法僅是類中的函數, 不需要綁定執行個體, 也就是說靜态方法的定義不需要傳入 self 參數. 靜态方法不屬于類的某一個執行個體對象, 而是屬于類本身, 是以不需要綁定到執行個體對象. 可以通過 className.staticMethodName 的方式來調用.

特點: 隻能使用靜态變量, 是以始終占用同一個記憶體, 執行效率更高, 但不會被自動回收.

應用場景: 用于處理一些不會經常改變, 但卻會被頻繁調用的資料. EG: Connect String/Config info

Note: 靜态成員不能通路非靜态成員, 因為非靜态成員隻有在被調用時才會被加載進記憶體, 而靜态成員是長駐記憶體且不會被自動回收的, 是以非靜态成員卻可以通路靜态成員.

類方法和執行個體方法類似, 差別在于前者需要定義 類對象參數 cls 而後者需要定義 執行個體對象參數 self. 兩者在綁定方法調用中, 都會自動的傳遞相應的對象到第一次參數 (cls/self) 中.