新聞中心
說(shuō)起類的調(diào)用,就繞不開(kāi)對(duì)于參數(shù)的討論,我們?cè)谥拔恼轮幸呀?jīng)討論過(guò)了靜態(tài)方法對(duì)于參數(shù)的一些使用。那么,同樣是我們所熟知的類方法,對(duì)于參數(shù)的使用上又有著怎樣的區(qū)別呢?這里我們先在代碼中調(diào)用classmethod,在運(yùn)行的過(guò)程中想必就知道需要用到什么參數(shù)了。其他的不多說(shuō),下面是調(diào)用classmethod代碼,大家找找參數(shù)吧。

在黃梅等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需求定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,黃梅網(wǎng)站建設(shè)費(fèi)用合理。
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可以在子類上被重寫為classmethod,反之亦然,因此也沒(méi)有必要提前將staticmethod全部改為classmethod,按需要使用即可。
以上就是classmethod在python中選擇參數(shù)的一些分析,同時(shí)結(jié)合我們之前所學(xué)的staticmethod,也可以進(jìn)行一個(gè)參數(shù)選擇的簡(jiǎn)單對(duì)比,有興趣的小伙伴可以查看下。
網(wǎng)頁(yè)名稱:創(chuàng)新互聯(lián)Python教程:classmethod如何在python中選擇參數(shù)?
網(wǎng)站URL:http://www.5511xx.com/article/cdcicoi.html


咨詢
建站咨詢
