python immutable and mutable

https://blog.csdn.net/hsuxu/article/details/7785835


python mutable as default parameter(NONONO)

def f(l=[]):

l.append(l)

print(l)


f()

f()

那么在python那些是immutable呢?
numbers, strings, tuples, frozensets
其实,还有一种特殊情况,就是自定义的类型呢?
一般情况下,程序员自定义的python类型都是mutable的,但是如果你想定制immutable的数据类型,那么你必须重写object的__setattr__和__delattr__方法,如下:

  1. class Immutable(object):  
  2.     def __setattr__(self, *args):  
  3.         raise TypeError("can't modify the value of immutable instance")  
  4.   
  5.     __delattr__ = __setattr__  
  6.   
  7.     def __init__(self, value):  
  8.          super(Immutable, self).__setattr__("value", value)  




-- 
刘林强

136-1133-1997
liulinqiang@unipus.cn
北京外研在线教育科技有限公司
外语教学与研究出版社
原文地址:https://www.cnblogs.com/SZLLQ2000/p/9272094.html