Python笔记 · self,cls,实例方法,静态方法,类方法
1. self和cls
首先,self和cls并不是關鍵字,而是約定的統一命名規范。簡單說:self用于指代實例/對象(Instance/Object),cls用于指代類(Class)。兩者經常以參數形式出現在類方法中,通過它們,類方法可以讀取或修改實例或類的狀態,以及調用相關方法。
與self和cls關系緊密的是方法的類型,因為兩者經常會以參數形式出現在類的方法中,由于它們是實例與類之間的差別,因此也會自然體現到了類的方法上,即:類的方法也會分實例/對象級別和類級別,前者在方法體內引用self,后者在方法體內引用cls。
2. 實例方法,靜態方法,類方法
所以,我們來看一下Python中類方法的分類:
- 實例方法(Instance Methods)
最常見的方法,隸屬于實例/對象,僅當對象實例化之后方可調用,內部維護的狀態(各字段)也都是實例級別的。無需函數裝飾器修飾。
- 靜態方法(Static Methods)
類級別的方法,與其編程語言中使用static修飾的方法類似,使用@staticmethod裝飾器修飾。靜態方法既不能接受self也不能接受cls作為參數,因此,靜態方法即不能讀取或修改實例的狀態,也不能讀取或修改類的狀態。從這個角度上講,靜態方法更像是一段獨立的“過程性代碼”或“腳本”的封裝,完全無狀態。
- 類方法(Class Method)
同樣是類級別的方法,與其編程語言中使用static修飾的方法類似,使用@classmethod裝飾器修飾。不同于靜態方法,類方法可以接受cls作為參數,這就意味著類方法可以讀取或修改類的狀態,這是其與靜態方法最大的不同之處。
下圖匯總了三種方法的描述:
參考:
Classes and Objects in Python
cls vs self — Method Types In Python
Python’s Instance, Class, and Static Methods Demystified
總結
以上是生活随笔為你收集整理的Python笔记 · self,cls,实例方法,静态方法,类方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCB多层板每层厚度及材质
- 下一篇: 汽车制造行业汽车电子,从哪里开始,你合适