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

2021-09-07 14:16:07 字數 2319 閱讀 2306

區域性

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()

print

testclass.val1

print

inst.val1

printtestclass.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 = 100

def__init__

(self):

self.val2 = 200

def fcn(self,val = 400):

val3 = 300self.val4 =val

self.val5 = 500

defadd(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 = 100

def__init__

(self):

self.val2 = 200

def fcn(self,val = 400):

val3 = 300self.val4 =val

self.val5 = 500

defadd(self):

#self.fcn()

result = self.val4 +self.val5

return

result

if__name__ == '

__main__':

inst =testclass()

print inst.add()

概括的乙個例子

class

testclass(object):

val1 = 100

def__init__

(self):

self.val2 = 200

def fcn(self,val = 400):

val3 = 300self.val4 =val

self.val5 = 500

defadd(self):

self.val4 = 1self.val5 = 2result = 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 member num 0 類變數,可以直接用類呼叫,或用例項物件呼叫 def init self,x,y self.x x 例項變數 成員變數 需要它是在類的建構函式內以self.開頭來定義的 self.y y self.fuc self.x,self.y defadd self tot...

靜態成員變數成員函式

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

靜態成員變數成員函式

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