區域性
classval1是類變數,可以由類名直接呼叫,也可以由物件來呼叫;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()
testclass.val1
inst.val1
printtestclass.val2 #會報錯。類不能訪問成員變數
inst.val2
inst.val3 #會報錯
inst.val4 #會報錯
print inst.val5 #會報錯
val2是成員變數,可以由類的物件來呼叫,這裡可以看出成員變數一定是以self.的形式給出的,因為self的含義就是代表例項物件;如果__init__內的變數沒有加self,那就變成乙個__init__的區域性變數;
val3不是成員變數,它只是函式fcn內部的區域性變數;
val4和val5是成員變數,但並沒有初始化,所以這裡會報錯
這個是能正確執行的
class這個是不能正確執行的,因為fcn是對val4,val5初始化,這裡沒執行fcn就沒初始化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.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()
inst.add()
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...