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.
標(biāo)記方法為類方法的裝飾器
說(shuō)明:
1. classmethod 是一個(gè)裝飾器函數(shù),用來(lái)標(biāo)示一個(gè)方法為類方法
2. 類方法的第一個(gè)參數(shù)是類對(duì)象參數(shù),在方法被調(diào)用的時(shí)候自動(dòng)將類對(duì)象傳入,參數(shù)名稱約定為cls
3. 如果一個(gè)方法被標(biāo)示為類方法,則該方法可被類對(duì)象調(diào)用(如 C.f()),也可以被類的實(shí)例對(duì)象調(diào)用(如 C().f())
>>> class C:
@classmethod
def f(cls,arg1):
print(cls)
print(arg1)
>>> C.f('類對(duì)象調(diào)用類方法')
<class '__main__.C'>
類對(duì)象調(diào)用類方法
>>> c = C()
>>> c.f('類實(shí)例對(duì)象調(diào)用類方法')
<class '__main__.C'>
類實(shí)例對(duì)象調(diào)用類方法
4. 類被繼承后,子類也可以調(diào)用父類的類方法,但是第一個(gè)參數(shù)傳入的是子類的類對(duì)象
>>> class D(C):
pass
>>> D.f("子類的類對(duì)象調(diào)用父類的類方法")
<class '__main__.D'>
子類的類對(duì)象調(diào)用父類的類方法
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python中通過(guò)@classmethod 實(shí)現(xiàn)多態(tài)的示例
- 詳解python中@classmethod和@staticmethod方法
- python中的classmethod與staticmethod
- python中的class_static的@classmethod的巧妙用法
- 詳解Python中@staticmethod和@classmethod區(qū)別及使用示例代碼
- Python 類方法和實(shí)例方法(@classmethod),靜態(tài)方法(@staticmethod)原理與用法分析
- python裝飾器類方法classmethod的使用場(chǎng)景
相關(guān)文章
Flask模板渲染與Get和Post請(qǐng)求詳細(xì)介紹
這篇文章主要介紹了Flask模板渲染與Get和Post請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09
Python實(shí)現(xiàn)操縱控制windows注冊(cè)表的方法分析
這篇文章主要介紹了Python實(shí)現(xiàn)操縱控制windows注冊(cè)表的方法,結(jié)合實(shí)例形式分析了Python使用_winreg模塊以及win32api模塊針對(duì)Windows注冊(cè)表操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05
Python函數(shù)中的函數(shù)(閉包)用法實(shí)例
這篇文章主要介紹了Python函數(shù)中的函數(shù)(閉包)用法,結(jié)合實(shí)例形式分析了Python閉包的定義與使用技巧,需要的朋友可以參考下2016-03-03
Python爬蟲(chóng)學(xué)習(xí)之翻譯小程序
這篇文章主要為大家詳細(xì)介紹了Python爬蟲(chóng)學(xué)習(xí)之翻譯小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Python PIL實(shí)現(xiàn)GIF壓縮工具
本文將結(jié)合wxPython的GUI框架和PIL(Python Imaging Library)的圖像處理能力編寫一個(gè)GIF壓縮工具,并提供了兩種壓縮方式,感興趣的小伙伴可以了解下2024-10-10
完美解決python中ndarray 默認(rèn)用科學(xué)計(jì)數(shù)法顯示的問(wèn)題
今天小編就為大家分享一篇完美解決python中ndarray 默認(rèn)用科學(xué)計(jì)數(shù)法顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Python使用Matplotlib繪制散點(diǎn)趨勢(shì)線的代碼詳解
Matplotlib是一個(gè)用于數(shù)據(jù)可視化的強(qiáng)大Python庫(kù),其基本功能之一是創(chuàng)建帶有趨勢(shì)線的散點(diǎn)圖,散點(diǎn)圖對(duì)于可視化變量之間的關(guān)系非常有用,本文將指導(dǎo)您使用Matplotlib繪制散點(diǎn)趨勢(shì)線的過(guò)程,涵蓋線性和多項(xiàng)式趨勢(shì)線,需要的朋友可以參考下2025-01-01

