bug or feature?

skip at pobox.com skip at pobox.com
Wed Oct 5 06:56:57 EDT 2005


    beza1e1> class A:
    beza1e1>    def __init__(self, lst=[]):
    beza1e1>       self.lst = lst

Lists are mutable and default args are only evaluated once, at function
definition.  If you want independent default args use:

    class A:
        def __init__(self, lst=None):
            if lst is None:
                lst = []
            self.lst = lst

The same scheme would work for other mutable types (dicts, sets, etc).

This same question gets asked once a month or so.  I'm sure this is in the
Python FAQ (check the website), but it was faster to reply than to look it
up...

Skip



More information about the Python-list mailing list