python類屬性‘類方法、靜態方法
阿新 • • 發佈:2020-12-27
一. 類屬性
1. 類屬性
類屬性就是 類 所擁有的屬性,它被 該類的所有例項物件 所共有。
類屬性可以使用 類或 例項物件訪問。
說明:
1. 記錄的某項資料 始終保持一致時,則定義類屬性。
2. 例項屬性要求 每個物件為其 單獨開闢一份記憶體空間 來記錄資料,而 類屬性 為全類所共有 ,僅佔用一份記憶體,更加節省記憶體空間。
2. 類屬性的設定
class Dog(object): tooth = 10 dog = Dog() print(Dog.tooth) #類直接呼叫 print(dog.tooth) #例項呼叫
說明:
類屬性類似於java的靜態變數
3. 類屬性的修改
類屬性的修改只能通過類修改,不能通過類的例項物件修改
class Dog(object): tooth = 10 dog = Dog() Dog.tooth = 20 print(Dog.tooth) # 20 print(dog.tooth) # 20 dog.tooth = 30 print(Dog.tooth) # 20 print(dog.tooth) # 30
說明:
上面dog.tooth = 30 並沒有修改類屬性tooth,而是建立了一個與類屬性tooth同名的例項屬性
二. 類方法
用裝飾器`@classmethod`來標識的方法為類方法,對於類方法,第一個引數必須是類,一般以`cls`作為第一個引數。
class Dog(object): tooth = 10 @classmethod def class_fn(cls): return cls.tooth dog = Dog() print(Dog.class_fn()) # 10 # 類直接呼叫類方法 print(dog.class_fn()) # 10 # 類的物件呼叫類方法
說明:引數cls代表當前類,呼叫方法時自動傳入
三. 靜態方法
通過裝飾器`@staticmethod`來進行修飾,靜態方法既不需要傳遞類也不需要傳遞例項物件作為引數(形參沒有self/cls)**。
靜態方法 也能夠通過 例項物件 和 類去訪問。
class Dog(object): tooth = 10 @staticmethod def static_fn(): return "靜態方法" dog = Dog() print(Dog.static_fn()) # 靜態方法 # 類直接呼叫靜態方法 print(dog.static_fn()) # 靜態方法 # 類的物件呼叫靜態方法
說明:
靜態物件中無法訪問類屬性