Python:類屬性,實例屬性,私有屬性與靜態方法,類方法,實例方法

屬性分爲實例屬性與類屬性this

方法分爲普通方法,類方法,靜態方法spa

 

一:屬性:對象

  儘可能把須要用戶傳入的屬性做爲實例屬性,而把同類都同樣的屬性做爲類屬性。實例屬性在每創造一個實例時都會初始化一遍,不一樣的實例的實例屬性可能不一樣,不一樣實例的類屬性都相同。從而減小內存。內存

  1:實例屬性:ci

    最好在__init__(self,...)中初始化string

    內部調用時都須要加上self.it

    外部調用時用instancename.propertynameclass

  2:類屬性:test

    在__init__()外初始化方法

    在內部用classname.類屬性名調用

    外部既能夠用classname.類屬性名又能夠用instancename.類屬性名來調用

  3:私有屬性:

    1):單下劃線_開頭:只是告訴別人這是私有屬性,外部依然能夠訪問更改

    2):雙下劃線__開頭:外部不可經過instancename.propertyname來訪問或者更改

      實際將其轉化爲了_classname__propertyname

二:方法

  1:普通類方法:

    def fun_name(self,...):

      pass

    外部用實例調用

  2:靜態方法:@staticmethod            

      不能訪問實例屬性!!!   參數不能傳入self!!!

      與類相關可是不依賴類與實例的方法!!

  3:類方法:@classmethod

      不能訪問實例屬性!!!   參數必須傳入cls!!!

      必須傳入cls參數(即表明了此類對象-----區別------self表明實例對象),而且用此來調用類屬性:cls.類屬性名

  *靜態方法與類方法均可以經過類或者實例來調用。其兩個的特色都是不可以調用實例屬性

  

  e.g1:

  1. class A:  
  2.     member = "this is a test."  
  3.     def __init__(self):  
  4.         pass  
  5.  
  6.     @classmethod  
  7.     def Print1(cls):  
  8.         print "print 1: ", cls.member  
  9.           
  10.     def Print2(self):  
  11.         print "print 2: ", self.member  
  12.             
  13.          
  14.     @classmethod      
  15.     def Print3(paraTest):  
  16.         print "print 3: ", paraTest.member  
  17.     @staticmethod  
  18.     def print4():  
  19.         print "hello"  

 

總結:類屬性與類方法是類固有的方法與屬性,不會由於實例不一樣而改變,寫他們的目的是減小多實例時所創造出來的內存空間,加快運行速度。

相關文章
相關標籤/搜索