I tried to write a class with mutable object as default value. I know for a single function we should set parameter as None and check the parameter in case the side effect for the function like following code. But I was wondering how about when I tried to initialize a class? side effect by using mutable object as a default value for a variable
def func(k, v, para = {}):
para[k] = v
return para
print(func('a', 1)) #expect {'a': 1}, actually return {'a': 1}
print(func('b', 2)) #expect {'a': 1}, actually return {'a': 1, 'b': 2}
print(func('c', 3)) #expect {'a': 1}, actually return {'a': 1, 'b': 2, 'c': 3}
#how about class?
class T
def __init__(self, para = {})
#or
#def __init__(self, para = None)
#para = para or dict()
self.para = para