這篇文章主要介紹了關於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 '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)的詳細內容。更多資訊請關注PHP中文網其他相關文章!