matthewperpick wrote:
> Check out this toy example that demonstrates some "strange" behaviour
> with keyword arguments and inheritance.
>
> =================================
>
> class Parent:
>     def __init__(self, ary = []):
>         self.ary = ary
>
[snip]

As pointed out earlier, default values for arguments are evaluated
when the function is defined, not when it is called.  This creates
confusion if this value is mutable and later mutated; I got confused
by it when I started python.  So it is often not a good idea to use
mutable objects as default arguments.

A simple fix:

def __init__(self, ary=None):
    if ary is None: ary = []
   self.ary = ary

--
Arnaud

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to