python裝飾器類方法classmethod的使用場(chǎng)景
【ps: 最近遇到的@classmethod比較多,故溫故下其用法,一篇例子足以了解】
功能:講解 @classmethod的使用
1、類中創(chuàng)建一個(gè)成員函數(shù),用@classmethod裝飾,作用類似靜態(tài)類,但不一樣的是可傳遞類參數(shù);
2、調(diào)用方法:先用函數(shù)對(duì)字符串進(jìn)行處理,再使用Date_test2類的構(gòu)造函數(shù)初始化;
3、好處是:重構(gòu)類時(shí),不必修改構(gòu)造函數(shù),只需額外添加要處理的函數(shù)即可,然后使用裝飾符@classmethod
@classmethod機(jī)制,可用一種與構(gòu)造器相仿的方式來(lái)構(gòu)造類的對(duì)象
# -*- 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):
# 這里第一個(gè)參數(shù)是cls,表示調(diào)用當(dāng)前的類名
year, month, day = map(int, string_date.split('-'))
date1 = cls(year, month, day)
# 返回的是一個(gè)初始化后的類
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()本場(chǎng)景可看到的好處:
1、將處理的函數(shù)統(tǒng)一放入類中,使代碼更加簡(jiǎn)潔
2、可以同時(shí)支持兩種輸入格式。
a:“2019,10,26”,
b:“2019-10-26”
3、使代碼更加容易維護(hù)
類方法與靜態(tài)方法@staticmethod的區(qū)別及使用場(chǎng)景
一般情況下,我們的類方法,和靜態(tài)方法多出現(xiàn)在工具類中,也就是不需要?jiǎng)?chuàng)建對(duì)象就可以調(diào)用的方法。
類方法:在方法中只使用類屬性和類方法時(shí),我們使用類方法。
靜態(tài)方法:當(dāng)方法中,既不是用類的屬性和方法,也不適用實(shí)例的屬性和方法時(shí),我們使用靜態(tài)方法。
類方法的應(yīng)用范圍比靜態(tài)方法的使用場(chǎng)景要多一些,如果實(shí)在拿不定注意,就先寫(xiě)類方法, 如果發(fā)現(xiàn)cls參數(shù)并沒(méi)有被使用,那么我們就可以切換為靜態(tài)方法了。
以上就是python裝飾器類方法classmethod的使用場(chǎng)景的詳細(xì)內(nèi)容,更多關(guān)于python裝飾器類classmethod的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
利用pygame完成動(dòng)畫(huà)精靈和碰撞檢測(cè)
這篇文章主要介紹了利用pygame完成動(dòng)畫(huà)精靈和碰撞檢測(cè),代碼詳細(xì),內(nèi)容豐富,對(duì)于想要學(xué)習(xí)pygame的朋友來(lái)講是一個(gè)不錯(cuò)的練習(xí),需要的朋友可以參考下2021-04-04
Python實(shí)現(xiàn)在線音樂(lè)播放器
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)在線音樂(lè)播放器的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
scrapy結(jié)合selenium解析動(dòng)態(tài)頁(yè)面的實(shí)現(xiàn)
這篇文章主要介紹了scrapy結(jié)合selenium解析動(dòng)態(tài)頁(yè)面的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python實(shí)現(xiàn)Canny及Hough算法代碼實(shí)例解析
這篇文章主要介紹了Python實(shí)現(xiàn)Canny與Hough算法代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
關(guān)于Python中的向量相加和numpy中的向量相加效率對(duì)比
今天小編就為大家分享一篇關(guān)于Python中的向量相加和numpy中的向量相加效率對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
針對(duì)Pandas的總結(jié)以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解
這篇文章主要針對(duì)Pandas總結(jié)以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解做出了實(shí)例,講解非常全面,值得收藏,需要的朋友可以參考下2023-03-03
Python?Streamlit制作交互式可視化網(wǎng)頁(yè)應(yīng)用實(shí)例
這篇文章主要為大家介紹了Python?Streamlit制作交互式可視化網(wǎng)頁(yè)應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
python中使用pyhook實(shí)現(xiàn)鍵盤監(jiān)控的例子
這篇文章主要介紹了python中使用pyhook實(shí)現(xiàn)鍵盤監(jiān)控的例子,包含pyhook的下載地址和手冊(cè)地址及一個(gè)Windows下的監(jiān)控實(shí)例,需要的朋友可以參考下2014-07-07

