先上一段**
class
test
(): x_num = 4
num = 1
y = 5
def__init__
(self, num):
self.num = num
defchange
(self,num):
test.num = num
test.x_num = 21
deftest
(self):
self.x = 12
self.y = 15
a = test(2)
print
'test.num =', test.num , '這裡指定了是類的成員'
print
'test.x_num =', test.x_num , '這裡指定了是類的成員'
print
'a.num =' , a.num , '物件中有num成員'
print
'a.x_num =', a.x_num , '物件中沒有x_num成員,但是類成員中有x_num'
print
'a.y =', a.y
try:
print a.x
except:
print
'no attribute named x', '物件和類都沒有x(這個時候test還沒執行,所以物件裡沒有x),所以報錯了'
a.test()
print
'test(),self.x = 12 -> a.x =', a.x, '非建構函式可以任意宣告物件的成員'
print
'test(),self.y = 15 -> a.y =', a.y, '非建構函式可以任意宣告物件的成員'
test.x_num = 100
print
'test.x_num=100 -> a.x_num =', a.x_num, '對於已建立的物件也會改'
a.change(6)
print
'a.change(6), test.num=6 -> test.num =', test.num, '因為change中使用了test.num,所以類中所有值都變了'
print
'a.change(6), test.x_num=21 -> a.x_num =', a.x_num, '即使a已經建立了,改了test.x_num, a的x_num是會變的'
a.x_num = 10
print
'a.x_num=10 -> test.x_num =',test.x_num, '這裡是直接呼叫的,相當於只改了當前物件的類成員值,其他的類成員值不會改'
print
'a.x_num=10 -> test().x_num = ', test(123).x_num
通過上述例子能夠得到:
對於類變數的引用(line2-4,8、9、15、16、27-34)
執行結果如下:
test.num = 1 這裡指定了是類的成員
test.x_num = 4 這裡指定了是類的成員
a.num = 2 物件中有num成員
a.x_num = 4 物件中沒有x_num成員,但是類成員中有x_num
a.y = 5
no attribute named x 物件和類都沒有x(這個時候test還沒執行,所以物件裡沒有x),所以報錯了
test(),self.x = 12 -> a.x = 12 非建構函式可以任意宣告物件的成員
test(),self.y = 15 -> a.y = 15 非建構函式可以任意宣告物件的成員
test.x_num=100 -> a.x_num = 100 對於已建立的物件也會改
a.change(6), test.num=6 -> test.num = 6 因為change中使用了test.num,所以類中所有值都變了
a.change(6), test.x_num=21 -> a.x_num = 21 即使a已經建立了,改了test.x_num, a的x_num是會變的
a.x_num=10 -> test.x_num = 21 這裡是直接呼叫的,相當於只改了當前物件的類成員值,其他的類成員值不會改
a.x_num=10 -> test().x_num = 21
python的類變數和成員變數
先看看下面 python view plain copy class testclass object val1 100 def init self self val2 200def fcn self val 400 val3 300 self val4 val self val5 500if na...
類和成員變數
類 class 是對結構體struct的增強,也是用於自定義型別。struct object class object 將關鍵字struct改為class 增加訪問修改符public 訪問修飾符 public,private,用於表示類的成員是否允許被外部訪問。public 公開的,所列的成員可被外...
類的成員變數和例項變數
class classout out mem out mem def init self inner mem inner mem self.inner mem self.inner mem self.inner mem self.inner mem self.out mem self.out mem...