python的類屬性和例項屬性

2021-06-12 03:12:22 字數 780 閱讀 1774

在處理專案的**的時候,發現如下**在多次呼叫的時候會出現問題。

class test1(object):

_dataarr=

def __init__(self,i):

def run(self):

print self._dataarr

t1=test1(1)

t2=test1(2)

t1.run()

t2.run()

輸出的結果照常理的話,應該是

[1][2]

結果卻是:

[1, 2]

[1, 2]

說明構造test類兩次,兩次用的_dataarr是同乙個,所以_dataarr應該是乙個類級別的屬性,這樣才能讓兩個例項進行呼叫,而且用的又是同乙個內容。

如果將_dataarr變數變成動態的。

class test2(object):

def __init__(self,i):

self._dataarr=

def run(self):

print self._dataarr

def case2():

t1=test2(1)

t2=test2(2)

t1.run()

t2.run()

case2()

那麼輸出的結果就是正確的。

[1][2]

為此合理的解釋,就是編譯型的語言和解釋型的語言有很大的不一樣,尤其在處理類這個東西的時侯,編譯型的語句可以通過static欄位來區分出來是否是

靜態的。

Python 類屬性和例項屬性

一 簡述二者區別 對類屬性的修改可被儲存在類中 單例模式就是基於類屬性的這種特性 修改後的屬性能夠被子類繼承 例項屬性的修改只對該例項有效,不會對其他例項和其對應類的子類例項造成影響 二 來看下例子 類屬性 class a object a 1 pass print a.a 檢視a類的屬性a,結果為...

python 例項屬性和類屬性

如何在乙個類中定義一些常量,每個物件都可以方便訪問這些常量而不用重新構造?第乙個問題,在 python 的類裡,你只需要和函式並列地宣告並賦值,就可以實現這一點,例如這段 中的 welcome str。一種很常規的做法,是用全大寫來表示常量,因此我們可以在類中使用 self.welcome str ...

python的類屬性和例項屬性

python的類屬性和例項屬性 今天一同事說踩了python的坑,這確實是個 坑 但是我覺得python之所以這樣設計,就是明確要求寫 的人知道自己在寫什麼 python的例項屬性必須在 init self 方法中定義,直接跟在類名後邊定義的屬性都預設是類屬性 類似於c 的static變數 而pyt...