首頁  >  文章  >  後端開發  >  關於靜態與類別成員的實例詳解(python)

關於靜態與類別成員的實例詳解(python)

Y2J
Y2J原創
2017-05-06 14:30:061452瀏覽

這篇文章主要介紹了關於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和val2
example.classmd() #实例调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
example.val1 = "The instance value1 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
Example.val1 = "The class value2 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:The class value2 changed,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:The class value2 changed,无法访问val2的值

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

先是語法上面的差異:

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

  • 靜態方法是無妨存取實例變數和類別變數的,而類別成員方法無法存取實例變數但是可以存取類別變數

使用的差異:

由於靜態方法無法存取類別屬性,實例屬性,相當於一個相對獨立的方法,跟類別其實沒有什麼關係。這樣說來,靜態方法就是在類別的作用域裡的函數而已。

【相關推薦】

1. Python免費影片教學

#2. Python學習手冊

# #3.

Python物件導向影片教學

以上是關於靜態與類別成員的實例詳解(python)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn