Code example
class z(): def __init__(self): self.z = ['foo'] print 'before', self.z def zoo(self, doo): doo[0] = 'ya' class b(): def __init__(self): self.z = 'foo' print 'before', self.z def zoo(self, doo): doo = 'ya' A = z() A.zoo(A.z) print 'after', A.z print B = b() B.zoo(B.z) print 'after', B.z
Output [dandelion@bart ~]$ python z.py before ['foo'] after ['ya'] before foo after foo [dandelion@bart ~]$
Explanation
It’s simple. In Python ‘string’ is immutable object, while [list] is mutable one
.