python中的靜態方法、類方法解讀__python

來源:互聯網
上載者:User

       先上代碼吧。

# -*- coding: utf-8 -*-class Tools():#---------------------------線程鎖---------------------------------------------------         number = 0    innum = 10    def __init__(self, config):        #self.logFilePath()        print 'tools class'    @staticmethod    def getStaticNumber():        Tools.number += 1        return Tools.number + Tools.innum   #但是無法訪問:self.innum,即執行個體屬性    @classmethod    def getClassNumber(cls):        cls.number += 2        return cls.number       #但是無法訪問:self.innum,即執行個體屬性    def getNumber(self):        self.number += 3        return self.number    if __name__ == '__main__':            print Tools.getClassNumber()        #    2    print Tools.getStaticNumber()       #    13    tool = Tools(1)     print 'object'    print tool.number                   #    3    print tool.getNumber()              #    6    執行個體的函數並不能改變靜態變數的值,但可以被靜態變數賦值,不過它被賦值的時刻只有該執行個體被建立    #print tool.getNumber()                        和被以一次使用時被靜態變數賦值,而其他時候不被賦值    print tool.getStaticNumber()        #    14    print tool.getClassNumber()         #    6        print Tools.getClassNumber()        #    8    print Tools.getStaticNumber()       #    19    print Tools.getClassNumber()        #    11    print 'object'    print tool.number                   #    6    print tool.getNumber()              #    9        tool = Tools(1)    print tool.number                   #    11    #print tool.getNumber()    print tool.getStaticNumber()        #    22    print tool.getClassNumber()         #    14        print Tools.getClassNumber()        #    16    print Tools.getStaticNumber()       #    27    print Tools.getClassNumber()        #    19    print tool.number                   #    19    print tool.getNumber()              #    22        print Tools.getClassNumber()        #    21    print Tools.getStaticNumber()       #    32    print Tools.getStaticNumber()       #    33    print Tools.getClassNumber()        #    25    print tool.number                   #    22    print tool.getNumber()              #    25

總結:

1、執行個體的函數並不能改變靜態變數的值,但可以被靜態變數賦值,不過它被賦值的時刻只有該執行個體被建立和被以一次使用時被靜態變數賦值,而其他時候不被賦值;

2、對於靜態變數和類變數而言,其值不會受到執行個體的成員變數的影響(不會被其賦值),它們的值屬於類;

3、靜態方法和類方法都可以通過執行個體訪問,和使用類訪問的效果一樣,因為靜態方法和類方法不屬於某一個執行個體,但是屬於類;

4、靜態方法和類方法都不可以訪問執行個體的成員變數;

5、靜態成員變數的改變,相當於這個類的改變,當重新為這個類產生一個執行個體對象的時候,此時獲得的執行個體對象的變數就是此刻靜態成員變數的值;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.