類方法和靜態方法 單例

2021-09-16 13:49:06 字數 1224 閱讀 4104

1. 類屬性就是針對類物件定義的屬性

使用賦值語句在 class 關鍵字下方可以定義類屬性

類屬性用於記錄 與這個類相關的特徵

2. 類方法就是針對類物件定義的方法

在類方法內部可以直接訪問類屬性或者呼叫其他的類方法

3. 類方法需要用修飾器 @classmethod 來標識,告訴直譯器這是乙個類方法

4. 類方法的第乙個引數 cls 5. 通過 類名. 呼叫 類方法,呼叫方法時,不需要傳遞 cls 引數

語法@classmethod

def 類方法名(cls):

pass

在開發時,如果需要在 類 中封裝乙個方法,這個方法:

既 不需要 訪問 例項屬性 或者呼叫 例項方法

也 不需要 訪問 類屬性 或者呼叫 類方法

這個時候,可以把這個方法封裝成乙個 靜態方法 靜態方法 需要用 修飾器 @staticmethod 來標識,告訴直譯器這是乙個靜態方法

通過 類名. 呼叫 靜態方法

語法@staticmethod

def 靜態方法名():

pass

設計模式是前人工作的總結和提煉,通常,被人們廣泛流傳的設計模式都是針對某一特定問題 的成熟的解決方案

使用 設計模式 是為了可重用**、讓**更容易被他人理解、保證**可靠性

目的 —— 讓類建立的物件,在系統中只有唯一的乙個例項

每一次執行類名() 返回的物件,記憶體位址是相同的

使用 類名() 建立物件時,python 的直譯器 首先 會 呼叫 __new__ 方法為物件 分配空間

__new__ 是乙個 由 object 基類提供的 內建的靜態方法,主要作用有兩個:

1) 在記憶體中為物件 分配空間

2) 返回 物件的引用

python 的直譯器獲得物件的 引用 後,將引用作為 第乙個引數,傳遞給 __init__ 方法

重寫 __new__ 方法的**非常固定!

重寫 __new__ 方法一定要 return super().__new__(cls)

否則 python 的直譯器得不到分配了空間的物件引用,就不會呼叫物件的初始化方法

單例 —— 讓類建立的物件,在系統中只有唯一的乙個例項

定義乙個類屬性,初始值是 none,用於記錄單例物件的引用

重寫 __new__ 方法

如果類屬性 is none,呼叫父類方法分配空間,並在類屬性中記錄結果

返回類屬性中記錄的物件引用

類方法和靜態方法

通過靜態方法和類方法能夠把相關的函式封裝到乙個類裡面,有效的將 組織起來,提高 的可維護性 class date object def init self,year,month,day self.year year self.month month self.day day 普通方法 def ech...

裝飾類方法和靜態方法

裝飾類方法或靜態方法是很簡單的,不過要確保裝飾器在 classmethod 或 staticmethod 之前。import time from functools import wraps def timethis func wraps func start time.time r func ar...

例項方法 類方法和靜態方法

1 例項方法,即需要通過建立例項 物件 進行呼叫的方法。下方即為例項方法的例子 class person object def init self self.name zs self.age 10 p person print p.name,p.age 2 類方法,即在定義方法時使用 classme...