新聞中心
區(qū)別:

為賓陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及賓陽網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作、賓陽網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
靜態(tài)方法裝飾器下定義的方法屬于函數(shù)(function);
類方法裝飾器下定義的方法屬于方法(method);
靜態(tài)方法無需傳入任何參數(shù);
類方法傳入的第一個(gè)參數(shù)必須是class本身cls;
靜態(tài)方法與類方法一旦被調(diào)用,內(nèi)存地址即確定。通過類調(diào)用和通過實(shí)例化對象調(diào)用的結(jié)果完全一樣。
相關(guān)推薦:《python教程》
直接上代碼:
# coding:utf-8 class Apple: def fun1(self): return 'normal' @staticmethod def fun2(): return 'staticmethod' @classmethod def fun3(cls): return 'classmethod' print Apple.fun1 print Apple.fun2 print Apple.fun3 print "-"*80 apple = Apple() print apple.fun1 print apple.fun2 print apple.fun3 print "-"*80 apple1 = Apple() print apple1.fun1 print apple1.fun2 print apple1.fun3
運(yùn)行結(jié)果:
> -------------------------------------------------------------------------------- > > -------------------------------------------------------------------------------- > >
普通方法傳入的第一個(gè)參數(shù)必須是self(當(dāng)然也可以不用self,官方要求盡量用self),self是指實(shí)例對象本身;靜態(tài)方法無需傳參;
類方法傳入的第一個(gè)參數(shù)必須是class,是指類本身。
對比結(jié)果1,5,9行
fun1通過class調(diào)用時(shí),它是未綁定的方法,而實(shí)例化apple和apple1之后,它屬于綁定的方法,且實(shí)例化后的apple和apple1內(nèi)存地址不同,因?yàn)樗鼈儗儆诓煌膶?shí)例對象。
對比結(jié)果2,6,10行
靜態(tài)方法fun2通過class調(diào)用或者通過實(shí)例化后的對象調(diào)用,是沒有任何區(qū)別的,全部都是指向同一塊內(nèi)存地址。可以簡單的理解成靜態(tài)方法與類或者實(shí)例沒有任何關(guān)系,一旦調(diào)用后,它的內(nèi)存地址即確定。
對比結(jié)果3,7,11行
類方法fun3通過class調(diào)用或者通過實(shí)例化后的對象調(diào)用,是沒有任何區(qū)別的,全部都是指向同一塊內(nèi)存地址。為什么?因?yàn)閷?shí)例化對象apple和apple1調(diào)用類方法fun3傳入的第一個(gè)參數(shù)是類本身Apple,也就是說apple.fun3 = apple1.fun3 = Apple.fun3。
當(dāng)前名稱:創(chuàng)新互聯(lián)Python教程:python靜態(tài)方法和類方法的區(qū)別有哪些
文章網(wǎng)址:http://fisionsoft.com.cn/article/ccsppoc.html


咨詢
建站咨詢
