關於靜態與類成員的執行個體詳解(python)

來源:互聯網
上載者:User
這篇文章主要介紹了關於Python中靜態方法與類成員的相關資料,文中通過範例程式碼給大家詳細總結了兩者在文法和使用上的區別,有需要的朋友可以參考借鑒,下面來一起看看吧。

前言

因為Python的水平目前一直是處於能用階段,平時寫的指令碼使用的Python的寫法也比較的簡單,沒有寫過稍微大一點的項目。對Python中的類,類之間的組織關係,整個項目中類之間如何耦合還缺乏認識。打算讀一讀別人寫的Python代碼來學習一下Python在工程中的應用,提升自己的技術水平。選取的Python代碼是Python爬蟲代碼,github地址。這個代碼剛好是符合跳出我的舒適區的水平的代碼,因此很適合我目前的水平來學習。

在Python2.4之後,主要使用裝飾器來實現靜態方法和類方法。

裝飾器使用@操作符,例子如下:

class Example: val1 = "Value 1" def init(self): self.val2 = "Value 2" @staticmethod def staticmd(): print("靜態方法,無法訪問Value1和Value2") @classmethod def classmd(cls): print('類方法,類:'+str(cls)+",val1:"+cls.val1+",無法訪問val2的值")example = Example()example.staticmd() #執行個體調用靜態方法,無法訪問執行個體變數val1和val2example.classmd() #執行個體調用類方法,輸出結果:類方法,類:<class 'main.Example'>,val1:Value 1,無法訪問val2的值Example.classmd() #類調用類方法,輸出結果:類方法,類:<class 'main.Example'>,val1:Value 1,無法訪問val2的值example.val1 = "The instance value1 changed"example.classmd() #類調用類方法,輸出結果:類方法,類:<class 'main.Example'>,val1:Value 1,無法訪問val2的值Example.val1 = "The class value2 changed"example.classmd() #類調用類方法,輸出結果:類方法,類:<class 'main.Example'>,val1:The class value2 changed,無法訪問val2的值Example.classmd() #類調用類方法,輸出結果:類方法,類:<class 'main.Example'>,val1:The class value2 changed,無法訪問val2的值

相信從上面的例子中,就可以很明顯地分辨出靜態方法和類方法的區別了。

先是在文法上面的區別:

  • 靜態方法不需要傳入self參數,類成員方法需要傳入代表本類的cls參數;

  • 靜態方法是無妨訪問執行個體變數和類變數的,類成員方法無法訪問執行個體變數但是可以訪問類變數

使用的區別:

由於靜態方法無法訪問類屬性,執行個體屬性,相當於一個相對獨立的方法,跟類其實並沒有什麼關係。這樣說來,靜態方法就是在類的範圍裡的函數而已。

【相關推薦】

1. Python免費視頻教程

2. Python學習手冊

3. Python物件導向視頻教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.