Python classmethod裝飾器原理及用法解析
英文文檔:
classmethod(function)
Return a class method for function.
A class method receives the class as implicit first argument, just like an instance method receives the instance. To declare a class method, use this idiom:
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
The @classmethod form is a function decorator – see the description of function definitions in Function definitions for details.
It can be called either on the class (such as C.f()) or on an instance (such as C().f()). The instance is ignored except for its class. If a class method is called for a derived class, the derived class object is passed as the implied first argument.
Class methods are different than C++ or Java static methods. If you want those, see staticmethod() in this section.
標記方法為類方法的裝飾器
說明:
1. classmethod 是一個裝飾器函數(shù),用來標示一個方法為類方法
2. 類方法的第一個參數(shù)是類對象參數(shù),在方法被調(diào)用的時候自動將類對象傳入,參數(shù)名稱約定為cls
3. 如果一個方法被標示為類方法,則該方法可被類對象調(diào)用(如 C.f()),也可以被類的實例對象調(diào)用(如 C().f())
>>> class C: @classmethod def f(cls,arg1): print(cls) print(arg1) >>> C.f('類對象調(diào)用類方法') <class '__main__.C'> 類對象調(diào)用類方法 >>> c = C() >>> c.f('類實例對象調(diào)用類方法') <class '__main__.C'> 類實例對象調(diào)用類方法
4. 類被繼承后,子類也可以調(diào)用父類的類方法,但是第一個參數(shù)傳入的是子類的類對象
>>> class D(C): pass >>> D.f("子類的類對象調(diào)用父類的類方法") <class '__main__.D'> 子類的類對象調(diào)用父類的類方法
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用PySimpleGUI和Pygame編寫一個MP3播放器
這篇文章主要為大家詳細介紹了Python如何使用PySimpleGUI和Pygame編寫一個簡單的MP3播放器,文中的示例代碼講解詳細,感興趣的小伙伴可以學習一下2023-11-11解決Python在導(dǎo)入文件時的FileNotFoundError問題
這篇文章主要介紹了解決Python在導(dǎo)入文件時的FileNotFoundError問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04基于Python組裝jmx并調(diào)用JMeter實現(xiàn)壓力測試
這篇文章主要介紹了基于Python組裝jmx并調(diào)用JMeter實現(xiàn)壓力測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11selenium+python 去除啟動的黑色cmd窗口方法
今天小編就為大家分享一篇selenium+python 去除啟動的黑色cmd窗口方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05解決TensorFlow GPU版出現(xiàn)OOM錯誤的問題
今天小編就為大家分享一篇解決TensorFlow GPU版出現(xiàn)OOM錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python實現(xiàn)銀聯(lián)支付和支付寶支付接入
這篇文章主要為大家詳細介紹了python實現(xiàn)銀聯(lián)支付和支付寶支付的接入,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05