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:@classmethoddef 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 是一個裝飾器函數,用來標示一個方法為類方法
2. 類方法的第一個參數是類對象參數,在方法被調用的時候自動將類對象傳入,參數名稱約定為cls
3. 如果一個方法被標示為類方法,則該方法可被類對象調用(如 C.f()),也可以被類的實例對象調用(如 C().f())
>>> class C: @classmethod def f(cls,arg1): print(cls) print(arg1) >>> C.f(’類對象調用類方法’)<class ’__main__.C’>類對象調用類方法>>> c = C()>>> c.f(’類實例對象調用類方法’)<class ’__main__.C’>類實例對象調用類方法
4. 類被繼承后,子類也可以調用父類的類方法,但是第一個參數傳入的是子類的類對象
>>> class D(C): pass>>> D.f('子類的類對象調用父類的類方法')<class ’__main__.D’>子類的類對象調用父類的類方法
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. css代碼優化的12個技巧2. .NET SkiaSharp 生成二維碼驗證碼及指定區域截取方法實現3. django創建css文件夾的具體方法4. ASP中if語句、select 、while循環的使用方法5. ASP中實現字符部位類似.NET里String對象的PadLeft和PadRight函數6. jsp網頁實現貪吃蛇小游戲7. ASP 信息提示函數并作返回或者轉向8. 存儲于xml中需要的HTML轉義代碼9. MyBatis JdbcType 與Oracle、MySql數據類型對應關系說明10. CentOS郵件服務器搭建系列—— POP / IMAP 服務器的構建( Dovecot )
