類屬性與類方法

2021-08-21 21:34:20 字數 1363 閱讀 7546

一:屬性:

盡量把需要使用者傳入的屬性作為例項屬性,而把同類都一樣的屬性作為類屬性。例項屬性在每創造乙個例項時都會初始化一遍,不同的例項的例項屬性可能不同,不同例項的類屬性都相同。從而減少記憶體。

1:例項屬性:

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

內部呼叫時都需要加上self.

外部呼叫時用instancename.propertyname

2:類屬性:

在__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:

class a:  

member = "this is a test."  

def __init__(self):  

pass  

@classmethod  

def print1(cls):  

print "print 1: ", cls.member  

def print2(self):  

print "print 2: ", self.member  

@classmethod      

def print3(paratest):  

print "print 3: ", paratest.member  

@staticmethod  

def print4():  

print "hello"  

總結:類屬性與類方法是類固有的方法與屬性,不會因為例項不同而改變,寫他們的目的是減少多例項時所創造出來的記憶體空間,加快執行速度。

類屬性與方法

類的私有屬性 private attrs 兩個下劃線開頭,宣告該屬性為私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.private attrs。類的方法 在類地內部,使用def關鍵字可以為類定義乙個方法,與一般函式定義不同,類方法必須包含引數self,且為第乙個引數 類的私...

類屬性和類方法與靜態方法

class dog def init self,name self.name name staticmethod 方法中既不需要 類屬性 也不需要例項屬性的時候 用靜態方法 好處是節省記憶體 defmethod print 靜態方法 classmethod 自定義類的方法和屬性時用 作用是 直譯器可...

類屬性和類方法

當乙個屬性 方法被static修飾的時候,就叫做類屬性 類方法,又叫做靜態屬性 靜態方法 沒有被static修飾的屬性,就叫物件屬性 物件方法,又叫例項屬性 例項方法和非靜態屬性 非靜態方法。當乙個屬性被宣告成類屬性,那麼所有的物件,都共享乙個值,所有物件都可以修改這個值,一經修改前面的值將會被丟棄...