Confusion regarding constructor as default value

Diez B. Roggisch deets at nospam.web.de
Thu Sep 27 15:34:11 CEST 2007


 aine_canby at yahoo.com wrote:

> Why are the following different?
> 
> def AddRow(self, rowName, tableRow=TableRow(ReleaseDate(""),
> ExpiryDate(""))):
> # check to see if the row already exists, if not add it to the
> container
> 
> if not self.dict.has_key(rowName):
> self.dict[rowName] = tableRow
> 
> def AddRow(self, rowName, tableRow):
> # check to see if the row already exists, if not add it to the
> container
> 
> if not self.dict.has_key(rowName):
> self.dict[rowName] = TableRow(ReleaseDate(""), ExpiryDate(""))
> 
> It seems that when I use the first function that I'm getting duplicate
> objects in self.dict
> 
> Thanks for your help,

It's a FAQ. 

http://effbot.org/pyfaq/why-are-default-values-shared-between-objects.htm

Diez



More information about the Python-list mailing list