[Python-Dev] Possible bug in class-init, lookin for mentors

"Max Zettlmeißl" max at zettlmeissl.de
Fri Apr 21 11:18:30 EDT 2017


On 21 April 2017 at 12:09, Justus Schwabedal <jschwabedal at gmail.com> wrote:
> I possibly found a bug in class initialization and would like to fix it.
>
> Here comes the bug-producing example:
>
> `class Foo:
>     def __init__(self, bar=[]):
>         self.list = bar
>
> spam_1 = Foo()
> spam_2 = Foo()
>
> spam_1.list.append(42)
> print(spam_2.list)`
>
> At least I think it's a bug.  Maybe it's a feature..
>

It is not a bug.

It is the way in which Python handles mutable keyword arguments.
If you want to use something in this way you should go with

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


More information about the Python-Dev mailing list