python的類變數和成員變數用法例項教程

2021-07-10 05:06:56 字數 3304 閱讀 7327

先看看下面這段**:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

classtestclass(object):

val1=100

def__init__(self):

self.val2=200

deffcn(self,val=400):

val3=300

self.val4=val

self.val5=500

if__name__=='__main__':

inst=testclass()

printtestclass.val1

printinst.val1

printinst.val2

printinst.val3

printinst.val4

printinst.val5

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

val2是成員變數,可以由類的物件來呼叫,這裡可以看出成員變數一定是以self.的形式給出的,因為self的含義就是代表例項物件;

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

val4和val5也都不是成員變數,雖是以self.給出,但並沒有在建構函式中初始化。

再看看下面的**(#號後面的是執行結果):

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

inst1=testclass()

inst2=testclass()

printtestclass.val1# 100

printinst1.val1# 100

inst1.val1=1000

printinst1.val1# 1000

printtestclass.val1# 100

testclass.val1=2000

printinst1.val1# 1000

printtestclass.val1# 2000

printinst2.val1# 2000

inst3=testclass()

printinst3.val1# 2000

可以發現:python的類變數和c++的靜態變數不同,並不是由類的所有物件共享。類本身擁有自己的類變數(儲存在記憶體),當乙個testclass類的物件被構造時,會將當前類變數拷貝乙份給這個物件,當前類變數的值是多少,這個物件拷貝得到的類變數的值就是多少;而且,通過物件來修改類變數,並不會影響其他物件的類變數的值,因為大家都有各自的副本,更不會影響類本身所擁有的那個類變數的值;只有類自己才能改變類本身擁有的類變數的值。

Python類變數和成員變數

先上一段 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...

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 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...