程式設計過程中發現了乙個問題,問題如下:
class myclass(object):
def __init__(self,lis=):
self.num = 0
self.lis = lis
classinit1 = myclass()
classinit1.num = 1
classinit2 = myclass()
classinit2.num = 2
例項化了自定義類myclass的兩個例項ci1 ci2,例項擁有兩個自己的變數num 和 lis
對例項各自的變數賦值取值發現例項變數lis互相影響。
通過檢視id,發現兩個變數中的lis是在同一記憶體位址。
修改類定義的方式,上述問題不再出現。
或者,在例項化過程**入空的list,如下:
推測原因為python內的變數共享機制,類似的dictionary物件、list物件包括字串物件之間大多都是互相引用,因此導致了互相影響。
通過傳入,相當於新建了乙個list傳入,因此不再通過引用去使用之前所存在的。
變數的例項化
乙個類的物件叫例項,得到乙個物件就叫做例項化。有些變數在定義的時候要加上new進行例項化,有些變數在定義的時候不加new進行例項化,例如 dim encard asnew cardinfoentity 與 dim dt as datatable,這是為什麼呢?其實加new就是對其變數進行例項化,為其...
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中的物件 Python中的變數 物件
由於沒時間系統學習下python 只能見乙個問題 乙個問題了 一 初級 物件 關於python中的資料型別,今天重新認識了下。參考 首先,python中,物件才有型別,變數是沒有型別的,它只是物件的 引用 其次,python中物件被分為兩類 可更改物件和不可更改物件 包括numbers,string...