91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中靜態方法和類方法有哪些區別

發布時間:2020-09-10 09:41:10 來源:億速云 閱讀:155 作者:小新 欄目:編程語言

這篇文章主要介紹了python中靜態方法和類方法有哪些區別,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

區別:

靜態方法裝飾器下定義的方法屬于函數(function);

類方法裝飾器下定義的方法屬于方法(method);

靜態方法無需傳入任何參數;

類方法傳入的第一個參數必須是class本身cls;

靜態方法與類方法一旦被調用,內存地址即確定。通過類調用和通過實例化對象調用的結果完全一樣。

直接上代碼:

#  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

運行結果:

<unbound method Apple.fun1>
<function fun2 at 0x00000000022FC4A8>
<bound method classobj.fun3 of <class __main__.Apple at 0x0000000001E7C768>>
--------------------------------------------------------------------------------
<bound method Apple.fun1 of <__main__.Apple instance at 0x00000000022FAE08>>
<function fun2 at 0x00000000022FC4A8>
<bound method classobj.fun3 of <class __main__.Apple at 0x0000000001E7C768>>
--------------------------------------------------------------------------------
<bound method Apple.fun1 of <__main__.Apple instance at 0x00000000022FAE48>>
<function fun2 at 0x00000000022FC4A8>
<bound method classobj.fun3 of <class __main__.Apple at 0x0000000001E7C768>>

普通方法傳入的第一個參數必須是self(當然也可以不用self,官方要求盡量用self),self是指實例對象本身;靜態方法無需傳參;

類方法傳入的第一個參數必須是class,是指類本身。

對比結果1,5,9行

fun1通過class調用時,它是未綁定的方法,而實例化apple和apple1之后,它屬于綁定的方法,且實例化后的apple和apple1內存地址不同,因為它們屬于不同的實例對象。

對比結果2,6,10行

靜態方法fun2通過class調用或者通過實例化后的對象調用,是沒有任何區別的,全部都是指向同一塊內存地址。可以簡單的理解成靜態方法與類或者實例沒有任何關系,一旦調用后,它的內存地址即確定。

對比結果3,7,11行

類方法fun3通過class調用或者通過實例化后的對象調用,是沒有任何區別的,全部都是指向同一塊內存地址。為什么?因為實例化對象apple和apple1調用類方法fun3傳入的第一個參數是類本身Apple,也就是說apple.fun3 = apple1.fun3 = Apple.fun3。

感謝你能夠認真閱讀完這篇文章,希望小編分享python中靜態方法和類方法有哪些區別內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

城固县| 许昌市| 宣城市| 紫金县| 新和县| 达州市| 林芝县| 湖北省| 石城县| 漾濞| 潢川县| 乌兰浩特市| 宣武区| 遵义县| 远安县| 布拖县| 保亭| 肃宁县| 五河县| 阆中市| 甘德县| 永清县| 惠州市| 东兰县| 义马市| 齐河县| 桦南县| 乾安县| 历史| 格尔木市| 施秉县| 三门县| 阳城县| 临汾市| 邛崃市| 江山市| 清苑县| 普宁市| 康保县| 灵山县| 方正县|