Bug ??

Brian van den Broek broek at cc.umanitoba.ca
Mon Jan 2 19:16:16 EST 2006


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



More information about the Python-list mailing list