熱線電話:13121318867

登錄
首頁精彩閱讀Python的實例方法,類方法,靜態方法之間的區別及調用關系
Python的實例方法,類方法,靜態方法之間的區別及調用關系
2018-03-11
收藏

Python的實例方法,類方法,靜態方法之間的區別及調用關系

 如果只看這個圖,很多人可能會看的一頭霧水,特別是學過完全面向對象語言的同學, Python 是雙面向的,既可以面向函數編程,也可以面向對象編程,所謂面向函數就是單獨一個. py 文件,里面沒有類,全是一些函數,調用的時候導入模塊,通過模塊名.函數名()即可調用,完全不需要類,那么你可能會問,那要類還有什么毛用? 類就是用來面向對象編程啦,類可以有自己的屬性,類可以創建很多實例,每個實例可以有不同的屬性,這也就保存了很多私有的數據,總之都有存在的必要.

再來看上面這張圖,在類里面定義的函數就是方法,類方法需要@ classmethod 修飾并且有個隱藏參數 cls,實例方法必須有個參數 self, 靜態方法必須有 @staticmethod修飾,類和實例都可以訪問靜態方法,實例可以訪問實例方法也可以訪問類方法,類可以訪問類方法也可以訪問實例方法,訪問實例方法必須要帶參數 self, 可以理解為類其實也是一個實例,類訪問實例方法不帶參數會報錯的.例如:

[python] view plain copy

    Traceback (most recent call last):  
      File "L:\Python\GetAllFiles\testRead.py", line 310, in <module>  
        sumRow , dimension = util.SumofRow(outputfilename)  
    TypeError: SumofRow() takes exactly 1 argument (2 given)  


類本身可以訪問函數,實例卻不行.所以在定義實例方法時要加一個self的參數:

[python] view plain copy

    def SumofRow(self,inputfile):  
        csv_input = pd.read_csv(inputfile,error_bad_lines=False)  
        return sum(np.asarray(csv_input).T[1:]),csv_input.shape[1]  


從這個圖片中學習到了,類方法,類靜態方法,靜態方法,注意它們是如何定義的,參數是怎么確定的,用的時候要注意。
說到這里,注意面向對象編程的思想,以及靜態變量,靜態方法,類,實例對象他們的生存期,知道生存期的差異就可以避免調用出錯了。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢