python程式設計(類變數和例項變數)

2021-08-14 15:34:57 字數 979 閱讀 2812

關於類變數和例項變數,一直不是很清楚。所以,想做幾個實驗,徹底解決這個問題。為此,我們設計了三個實驗。

1、直接引用類變數

import os

import sys

class a():

data = 10

a = a()

b = a()

print a.data

print b.data

print a.__dict__

print b.__dict__

通過實驗結果,我們發現a和b中關於data的資料都是10,但是此時a和b的__dict__都沒有資料。

2、修改例項變數

a.data = 11

print a.data

print b.data

print a.__dict__

print b.__dict__

接著1的實驗,我們繼續往下看。為此,先修改a.data =11,檢視**的執**況。通過實驗,我們發現,此時a的資料發生了改變,且列印為11,__dict__也發生了改變。但是b什麼也沒變。

3、修改類變數

a.data = 12

print a.data

print b.data

print a.__dict__

print b.__dict__

在實驗3中,**直接修改了類的變數。此時通過列印,我們看到a的資料仍然為11,但是b的資料已經列印為12。關於__dict__,則a存在data資料,b照樣什麼也沒有。

4、結論

通過實驗,我們可以得出這麼一些結論,即例項建立的時候,引用的變數直接指向類變數。如果此時例項變數沒有做出修改,那麼類變數修改為什麼資料,例項變數就會列印什麼資料。然而,一旦 例項變數資料發生了改變,它就會在自己的記憶體空間重新給這個變數分配一段空間,這個時候,類變數的修改就和例項變數沒有什麼關係了。

Python類變數和例項變數

類體中 所有函式之外 此範圍內定義的變數,稱為類屬性或類變數 類屬性的呼叫方式有 2 種,既可以使用類名直接呼叫,也可以使用類的例項化物件呼叫。需要注意的是 因為類變數為所有例項化物件共有,通過類名修改類變數的值,會影響所有的例項化物件 而不能通過類物件修改類屬性。類體中,所有函式內部 以 self...

python中類變數和例項變數 之例項變數

class test def f self,name self.name name def f1 self print self.name 例項變數為例項物件特有資料 x1 test 例項化test類,建立例項物件x1 x2 test 例項化test類,建立例項物件x2 設定例項屬性 方式1 x1....

python 類 例項 繼承中變數的id是否變化

注 估計這麼亂的 只有我自己能看。通過這段 的驗證,證明了在類和例項的相對關係中,把變數儲存為字串,數字,在各個類 例項之間變換的時候,變數的id是變化的,把變數儲存為列表和字典的時候,id位址是不變的。id位址變與不變用於確認是否是同乙份資料,看一下這個變數是否是全域性變數 class initp...