classmethod怎么在python中選擇參數(shù)-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)classmethod怎么在python中選擇參數(shù),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

桃江網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),桃江網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為桃江成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的桃江做網(wǎng)站的公司定做!
class Data_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 :"
        print self.year
        print "month :"
        print self.month
        print "day :"
        print self.day

在Date_test類里面創(chuàng)建一個(gè)成員函數(shù), 前面用了@classmethod裝飾。 它的作用就是有點(diǎn)像靜態(tài)類,比靜態(tài)類不一樣的就是它可以傳進(jìn)來(lái)一個(gè)當(dāng)前類作為第一個(gè)參數(shù)。那么如何調(diào)用呢?

r=Data_test2.get_date("2016-8-1")
r.out_date()

輸出:

year :
2016
month :
8
day :
1

這樣子等于先調(diào)用get_date()對(duì)字符串進(jìn)行處理,然后才使用Data_test的構(gòu)造函數(shù)初始化。

補(bǔ)充classmethod與staticmethod:

這兩者的區(qū)別在于,classmethod增加了一個(gè)對(duì)實(shí)際調(diào)用類的引用,這帶來(lái)了很多方便的地方:

  • 方法可以判斷出自己是通過(guò)基類被調(diào)用,還是通過(guò)某個(gè)子類被調(diào)用

  • 通過(guò)子類調(diào)用時(shí),方法可以返回子類的實(shí)例而非基類的實(shí)例

  • 通過(guò)子類調(diào)用時(shí),方法可以調(diào)用子類的其他classmethod

一般來(lái)說(shuō)classmethod可以完全替代staticmethod。staticmethod的好處是調(diào)用時(shí)它返回的是一個(gè)真正的函數(shù),而且每次調(diào)用時(shí)返回同一個(gè)實(shí)例(classmethod則會(huì)對(duì)基類和子類返回不同的bound method實(shí)例),但這點(diǎn)幾乎從來(lái)沒(méi)有什么時(shí)候是有用的。不過(guò),staticmethod可以在子類上被重寫(xiě)為classmethod,反之亦然,因此也沒(méi)有必要提前將staticmethod全部改為classmethod,按需要使用即可。

關(guān)于classmethod怎么在python中選擇參數(shù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

名稱欄目:classmethod怎么在python中選擇參數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.muchs.cn/article38/dssepp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、靜態(tài)網(wǎng)站響應(yīng)式網(wǎng)站、微信小程序、域名注冊(cè)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司