On 01.08.07, Andre Wobst wrote:
> Michael,
> 
> On 01.08.07, Michael SCHINDLER wrote:
> > The first use of this as document.document() and then adding some
> > pages modifies the standard argument (which was [] initially). All
> > further instances are then initialized with this nonempty list.
> 
> Blame on us. Blame ... please ... :-)

Aii....

> > Which solution do you prefer:
> > 
> >   class document:
> >       def __init__(self, pages=[]):
> >           self.pages = pages[:]
> > 
> > 
> >   class document:
> >       def __init__(self, pages=None):
> >           if pages is None:
> >               self.pages = []
> >           else:
> >               self.pages = pages
> 
> I'm not sure. Personally I somehow favour the second option (which is
> quite Pythonic btw), but I remember a "bug" Jörg came up with some
> time ago. It was about an internal reordering of some attributes and
> it was done on the original list passed to the method. I understand
> that such a behaviour can be very troublesome and shouldn't be done
> for such an end-user library like PyX.
> 
> So let me formulate a rule of thumb: Go for option 1 for all
> attributes, which are not read-only. (For read-only attribute *no*
> copy is necessary and should not be made.) Jörg, do you agree?

Sounds very reasonable to me.

> > I will scan through the code to eliminate all other occurrences of
> > this problem.
> 
> Thanks a lot!

Thanks from me, as well. These kind of errors tend to be hard to spot.

        Jörg

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
PyX-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyx-user

Reply via email to