python裝飾器類方法classmethod的使用場景
【ps: 最近遇到的@classmethod比較多,故溫故下其用法,一篇例子足以了解】
功能:講解 @classmethod的使用
1、類中創(chuàng)建一個成員函數(shù),用@classmethod裝飾,作用類似靜態(tài)類,但不一樣的是可傳遞類參數(shù);
2、調(diào)用方法:先用函數(shù)對字符串進行處理,再使用Date_test2類的構(gòu)造函數(shù)初始化;
3、好處是:重構(gòu)類時,不必修改構(gòu)造函數(shù),只需額外添加要處理的函數(shù)即可,然后使用裝飾符@classmethod
@classmethod機制,可用一種與構(gòu)造器相仿的方式來構(gòu)造類的對象
# -*- coding: utf-8 -*- ''' @Time : 2023/6/12 11:36 @Author : Celeste @File : classmethod_.py ''' class Date_test2(object): day = 0 month = 0 year = 0 def __init__(self, year=0, month=0, day=0): self.day = day self.month = month self.year = year @classmethod def get_date(cls, string_date): # 這里第一個參數(shù)是cls,表示調(diào)用當前的類名 year, month, day = map(int, string_date.split('-')) date1 = cls(year, month, day) # 返回的是一個初始化后的類 return date1 def out_date(self): print("year :", self.year) print("month :", self.month) print("day :", self.day) t = Date_test2(2020,3,6) t.out_date() r = Date_test2.get_date("2023-6-12") r.out_date()
本場景可看到的好處:
1、將處理的函數(shù)統(tǒng)一放入類中,使代碼更加簡潔
2、可以同時支持兩種輸入格式。
a:“2019,10,26”,
b:“2019-10-26”
3、使代碼更加容易維護
類方法與靜態(tài)方法@staticmethod的區(qū)別及使用場景
一般情況下,我們的類方法,和靜態(tài)方法多出現(xiàn)在工具類中,也就是不需要創(chuàng)建對象就可以調(diào)用的方法。
類方法:在方法中只使用類屬性和類方法時,我們使用類方法。
靜態(tài)方法:當方法中,既不是用類的屬性和方法,也不適用實例的屬性和方法時,我們使用靜態(tài)方法。
類方法的應(yīng)用范圍比靜態(tài)方法的使用場景要多一些,如果實在拿不定注意,就先寫類方法, 如果發(fā)現(xiàn)cls參數(shù)并沒有被使用,那么我們就可以切換為靜態(tài)方法了。
以上就是python裝飾器類方法classmethod的使用場景的詳細內(nèi)容,更多關(guān)于python裝飾器類classmethod的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
利用Python將彩色圖像轉(zhuǎn)為灰度圖像的兩種方法
這篇文章主要給大家介紹了關(guān)于利用Python將彩色圖像轉(zhuǎn)為灰度圖像的兩種方法,以及python 批量將圖片轉(zhuǎn)為灰度圖的方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2021-12-12零基礎(chǔ)寫python爬蟲之urllib2中的兩個重要概念:Openers和Handlers
文章首先介紹了urllib2的2個方法,然后詳細介紹了urllib2中的2個重要概念Openers和Handlers的相關(guān)知識,希望能對大家有所幫助2014-11-11