Puzzled by behaviour of class with empty constructor

dbaston at gmail.com dbaston at gmail.com
Fri Jan 25 17:54:48 EST 2008


On Jan 25, 5:46 pm, Bjoern Schliessmann <usenet-
mail-0306.20.chr0n... at spamgourmet.com> wrote:
> dbas... at gmail.com wrote:
> > print x.ends,y.ends,z.ends
> > #############
> > Running the following code outputs:
> >>>> [(0, 2)] [(0, 2)] [(0, 2)]
>
> > Can anyone explain this?
>
> Yes. You bound a single list to the name "ends" inside the class.
> This name is shared by all instances.
>
> If you want the instances to each have separate lists, delete
> the "ends" definition from class declaration and insert "self.ends
> = []" into __init__.
>
> I also suggest you to have a look at the tutorial.
>
> Regards,
>
> Björn
>
> --
> BOFH excuse #49:
>
> Bogon emissions

Björn,

Thanks for the help.  I had misguidedly defined the members of all of
my classes as in the example above; I never noticed the issue with any
of the others because they did not have empty constructors.

Thanks again for the correction.



More information about the Python-list mailing list