I think it has something to do with the physical id of the object 2011/1/25 Karim <karim.liat...@free.fr>
> > Hello All, > > Just to share on rageous bug I encounter where 2 lists which "should" to be > different (same id) because hold by different instances of the same class > are not in fact DIFFERENT, see below: > > >>> class Device(): > ... def __init__(self, parameters=[]): > ... self.parameters = parameters > ... def param(self): > ... print(id(self.parameters)) > ... > >>> a=Device() > >>> b=Device() > >>> a.param() > 140559202956568 > >>> b.param() > 140559202956568 > > When I discovered that I was puzzled because at the prompt: > > >>> a = [] > >>> b = [] > >>> id(a) > 140559202956496 > >>> id(b) > 140559202957000 > > I am not really understanding why my init in the class made it refers to > the same list object. > What is the difference with 2nd example directly at the prompt? > > By the way, this one is ok: > > >>> class Device(): > ... def __init__(self,parameters=None): > ... self.parameters = None > ... self.parameters = [] > ... def param(self): > ... print(id(self.parameters)) > ... > >>> a=Device() > >>> b=Device() > >>> b.param() > 140559202956496 > >>> a.param() > 140559202956568 > > Karim > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor