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__方法,如下:
- class Immutable(object):
- def __setattr__(self, *args):
- raise TypeError("can't modify the value of immutable instance")
- __delattr__ = __setattr__
- def __init__(self, value):
- super(Immutable, self).__setattr__("value", value)
-- 刘林强 136-1133-1997 liulinqiang@unipus.cn 北京外研在线教育科技有限公司 外语教学与研究出版社