python 3.x類屬性可變和不可變時,實例賦值的差異

在類屬性不是可變屬性的時候,在實例賦值屬性時,是新創建了實例屬性,將類屬性“隱藏”,刪除實例屬性後,類屬性顯示出來:

class Foo(object):
    x = 1.5

foo = Foo()
print(foo.x)

foo.x = 1.7
print(foo.x)
print(Foo.x)

del foo.x
print(foo.x)

運行結果:

1.5
1.7
1.5
1.5

在類屬性是可變屬性的時候,在實例賦值屬性時,會影響到類屬性的值,所以也不可刪除:

class Foo(object):
    x = {2003:'poe2'}

foo = Foo()
print(foo.x)
foo.x[2004] = 'valid path'
print(foo.x)
print(Foo.x)
#del foo.x #沒有遮蔽類屬性所以無法進行刪除

 

運行結果:

{2003: 'poe2'}
{2003: 'poe2', 2004: 'valid path'}
{2003: 'poe2', 2004: 'valid path'}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章