Python 類變數,成員變數,靜態變數,區域性變數

2021-10-06 23:57:16 字數 3176 閱讀 6424

class

member()

: num=

0#類變數,可以直接用類呼叫,或用例項物件呼叫

def__init__

(self,x,y)

: self.x=x #例項變數(成員變數),需要它是在類的建構函式內以self.開頭來定義的

self.y=y

self.fuc(self.x,self.y)

defadd

(self)

: total=

2#區域性變數

self.vara=

3# 雖是以self.給出,但並沒有在建構函式中進行初始化

self.varb=

4 fina=

(self.x+self.y)

*total

return fina

deffuc(self,a,b)

: self.varc=a #成員變數,他們在成員函式fuc()中定義,但是在建構函式中呼叫了fuc()函式

self.vard=b# 同時可以一道區分學習python中的例項方法、靜態方法、類方法、類變數和例項變數

區域性

class

testclass

(object):

val1 =

100def

__init__

(self)

: self.val2 =

200def

fcn(self,val =

400)

: val3 =

300 self.val4 = val

self.val5 =

500if __name__ ==

'__main__'

: inst = testclass(

)print testclass.val1

print inst.val1 print testclass.val2 #會報錯。類不能訪問成員變數

print inst.val2

print inst.val3 #會報錯

print inst.val4    #會報錯

print inst.val5    #會報錯

val1是類變數,可以由類名直接呼叫,也可以由物件來呼叫;

val2是成員變數,可以由類的物件來呼叫,這裡可以看出成員變數一定是以self.的形式給出的,因為self的含義就是代表例項物件;如果__init__內的變數沒有加self,那就變成乙個__init__的區域性變數;

val3不是成員變數,它只是函式fcn內部的區域性變數;

val4和val5是成員變數,但並沒有初始化,所以這裡會報錯

這個是能正確執行的

class

testclass

(object):

val1 =

100def

__init__

(self)

: self.val2 =

200def

fcn(self,val =

400)

: val3 =

300 self.val4 = val

self.val5 =

500def

add(self)

: self.fcn(

) result = self.val4 + self.val5

return result

if __name__ ==

'__main__'

: inst = testclass(

)print inst.add(

)

這個是不能正確執行的,因為fcn是對val4,val5初始化,這裡沒執行fcn就沒初始化

class

testclass

(object):

val1 =

100def

__init__

(self)

: self.val2 =

200def

fcn(self,val =

400)

: val3 =

300 self.val4 = val

self.val5 =

500def

add(self)

:# self.fcn()

result = self.val4 + self.val5

return result

if __name__ ==

'__main__'

: inst = testclass(

)print inst.add(

)

概括的乙個例子

class

testclass

(object):

val1 =

100def

__init__

(self)

: self.val2 =

200def

fcn(self,val =

400)

: val3 =

300 self.val4 = val

self.val5 =

500def

add(self)

: self.val4 =

1 self.val5 =

2 result = self.val4 + self.val5

return result

if __name__ ==

'__main__'

: inst = testclass(

)print inst.add(

)print inst.val4

inst.fcn(

)print inst.val4

執行出來的結果:

可以看到,只要你對val4,val5初始化了就可以用例項訪問,證明這個帶self的是成員變數,不是區域性變數。執行fcn後,對成員變數的值進行了改變。

Python 類變數,成員變數,靜態變數,區域性變數

區域性 class testclass object val1 100 def init self self.val2 200 def fcn self,val 400 val3 300self.val4 val self.val5 500 if name main inst testclass p...

靜態成員變數成員函式

靜態成員變數 1 定義靜態成員變數 關鍵字static可以用於說明乙個類的成員,靜態成員提供了乙個同類物件的共享機制 把乙個類的成員說明為static時,這個類無論有多少個物件被建立,這些物件共享這個static成員 靜態成員區域性於類,它不是物件成員 includeusing namespace ...

靜態成員變數成員函式

1.先來介紹它的第一條也是最重要的一條 隱藏。static函式,static變數均可 當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。舉例來說明。同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。char a a global variable void m...