python類的可變型別成員和不可變型別成員的區別

2021-06-28 14:26:24 字數 546 閱讀 2103

#!/usr/bin/python

# -*- coding: utf-8 -*-

class foo1(object):

x = 1

class foo2(object):

x =

f1 = foo1()

f2 = foo2()

f1.x = 3

print f1.x

print foo1.x

f2.x['101'] = 3

print f2.x

print foo2.x

執行上面的**會發現,f1作為foo1的例項,當f1的屬性被改變時,類foo1的屬性未能被改變。而f2的屬性被改變的時候,類foo2的屬性也隨之改變。

因為python的型別分為可變型別和不可變型別,不可變的型別有string,integer,tuple。可變型別有list和dict。因為foo1的成員x為不可變屬性,所以在重新賦值時會給物件新建乙個「新例項屬性」,覆蓋了對類屬性的引用。而foo2的成員為可變型別,所以可以更改它的值。

python不可變型別和可變型別

python變數可以分為兩種型別 不可變型別 數字 字串 元組 不可變集合 可變型別 列表 字典 可變集合 python所宣告的變數都以物件的形式存在,存在於機器的固定記憶體之中。可以理解為變數名為物件的指標 如宣告a 3,則a指向儲存3的空間,python通過使用計數器的方式來判斷空間的引用情況,...

python 可變型別和不可變型別

1.什麼是不可變型別 變數對應的值中的資料是不能被修改,如果修改就會生成乙個新的值從而分配新的記憶體空間。不可變型別 數字 int,long,float 布林 bool 字串 string 元組 tuple 2.什麼是可變型別 變數對應的值中的資料可以被修改,但記憶體位址保持不變。可變型別 列表 l...

Python的可變和不可變型別

一 可變型別 不可雜湊型別就是可變型別 unhashable 值改變,id不變,證明改的是原值,證明原值是可以改變的。總結 list,dict 都為可變型別,整體的位址不變,變的是裡面的值,針對字典多說點 key必須是不可變型別,value可以是任意型別。list是可變型別 l aaa bbb cc...