1

重複の可能性:
Python の「最小の驚き」: 変更可能な既定の引数

以下と混同しています。私は基本クラスを持っています:

class MyBase:

    def __init__(self, store=set()):
        self._store = store

子クラスが MyBase を継承するようになりました

class Child1(MyBase):
    pass

class Child2(MyBase)
    pass

それで、

child1 = Child1()
child2 = Child2()

print(id(child1._store) = id(child2._store))
>>> True

これらのインスタンスに共有 _store があるのはなぜですか??

お役に立てば幸いです。

よろしく、ナビ

4

1 に答える 1

3

__init__set() は、親クラスの解析時に 1 回作成されます。

これを修正するには、次のようにコードを変更します。

class MyBase:

    def __init__(self, store=None):
        if store is None:
            store = set()
        self._store = store
于 2012-09-06T06:59:52.523 に答える