Bug ??

Eddy Ilg eddy at fericom.net
Mon Jan 2 18:43:56 EST 2006


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





More information about the Python-list mailing list