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