Changing the default for data to None and creating a new dict inside your function might handle this. But I don't know what it is you want. It never even occurred to me that this behavior might be desired in the first place.
class Param(object): def __init__(self,data=None,condition=False): if data is None: data = {} if condition: data['class'] = 'Advanced' print data Param(condition=True) Param(condition=False) I always thought you didn't want to have empty sequences as default values. On Tue, Jun 3, 2008 at 5:11 PM, <[EMAIL PROTECTED]> wrote: > Hello all, > > I have come across this issue in Python and I cannot quite understand > what is going on. > > class Param(): > def __init__(self, data={}, condition=False): > if condition: > data['class']="Advanced" > print data > > In the previous example, I expect the variable data to be re- > initialized every time I construct an object type Param. However, when > I do the following: > > Param(condition=True) > Param(condition=False) > > The second call still prints {'class': 'Advanced'} > > Shouldn't data be initialized to {} since it is the default in > __init__? Why would the state of data be preserved between two > independent instantiations? > > Any help would be greatly appreciated. > > M. > -- > http://mail.python.org/mailman/listinfo/python-list > -- | _ | * | _ | | _ | _ | * | | * | * | * |
-- http://mail.python.org/mailman/listinfo/python-list