新聞中心
區(qū)別:

為賓陽等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及賓陽網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站建設、網(wǎng)站制作、賓陽網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
靜態(tài)方法裝飾器下定義的方法屬于函數(shù)(function);
類方法裝飾器下定義的方法屬于方法(method);
靜態(tài)方法無需傳入任何參數(shù);
類方法傳入的第一個參數(shù)必須是class本身cls;
靜態(tài)方法與類方法一旦被調(diào)用,內(nèi)存地址即確定。通過類調(diào)用和通過實例化對象調(diào)用的結果完全一樣。
相關推薦:《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
運行結果:
> -------------------------------------------------------------------------------- > > -------------------------------------------------------------------------------- > >
普通方法傳入的第一個參數(shù)必須是self(當然也可以不用self,官方要求盡量用self),self是指實例對象本身;靜態(tài)方法無需傳參;
類方法傳入的第一個參數(shù)必須是class,是指類本身。
對比結果1,5,9行
fun1通過class調(diào)用時,它是未綁定的方法,而實例化apple和apple1之后,它屬于綁定的方法,且實例化后的apple和apple1內(nèi)存地址不同,因為它們屬于不同的實例對象。
對比結果2,6,10行
靜態(tài)方法fun2通過class調(diào)用或者通過實例化后的對象調(diào)用,是沒有任何區(qū)別的,全部都是指向同一塊內(nèi)存地址??梢院唵蔚睦斫獬伸o態(tài)方法與類或者實例沒有任何關系,一旦調(diào)用后,它的內(nèi)存地址即確定。
對比結果3,7,11行
類方法fun3通過class調(diào)用或者通過實例化后的對象調(diào)用,是沒有任何區(qū)別的,全部都是指向同一塊內(nèi)存地址。為什么?因為實例化對象apple和apple1調(diào)用類方法fun3傳入的第一個參數(shù)是類本身Apple,也就是說apple.fun3 = apple1.fun3 = Apple.fun3。
標題名稱:創(chuàng)新互聯(lián)Python教程:python靜態(tài)方法和類方法的區(qū)別有哪些
當前鏈接:http://www.dlmjj.cn/article/ccsppoc.html


咨詢
建站咨詢
