Can anybody explain this behaviour?
class A(object):
def __init__(self, x={}):
self.x = x
var1 = A()
print '#1', var1.x
var1.x['key'] = 'value'
print '#2', var1.x
var2 = A()
print '#3', var2.x
What I expect:
#1 {}
#2 {'key': 'value'}
#3 {}
What it really does:
#1 {}
#2 {'key': 'value'}
#3 {'key': 'value'}
This changes everything:
var2 = A({})