Eddy Ilg said unto the world upon 02/01/06 05:43 PM: > Hi, > > I have a class and I am trying to set the instance varirable 'variables' > (also tried different names). The variable gets initialized by > default-value parameter of the constructor. When I change the variable and > call the constructor again, the default value changes !!! Is this supposed > to happen? See code and example below: > > class url: > def __init__(self,link,vars={}): > self.link=link > print "vars:",vars > if hasattr(self,'vars'): > print "self.variables:",self.variables > self.variables=vars > print "self.variables:",self.variables > > def set_var(self,name,value): > self.variables[name]=value > > > >>>>from generator import url >>>>u=url('image') > > vars: {} > self.variables: {} > >>>>u.set_var('a',5) >>>>v=url('test') > > vars: {'a': 5} > self.variables: {'a': 5} > > See that 'vars' gets the old value of 'variables' passed? How can this be??? > I am using python version 2.3.5 > > Eddy
Visit <http://www.python.org/doc/faq/general.html#why-are-default-values-shared-between-objects> and if that doesn't clear it up, ask again. Best, Brian vdB -- http://mail.python.org/mailman/listinfo/python-list