Confusion regarding constructor as default value
Diez B. Roggisch
deets at nospam.web.de
Thu Sep 27 09:34:11 EDT 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