0

次の例を想定します。

class Example(object):

    def __init__(self, data=[]):
        self.data = data

引数が指定されていない場合data、インスタンス変数はデフォルト値 (空のリスト) に初期化されます。ただし、次のセッションを検討してください。

>>> e = Example()
>>> print(e.data)
[]
>>> e.data.append(1)
>>> print(e.data)
[1]
>>> e = Example()
>>> print(e.data)
[1]

最初に、Example正確な引数値を指定せずにインスタンスが作成されるため、デフォルトが使用されます。それは予想されます。

次に、メンバー変数が変更され、その状態が期待どおりに変更されます。

最後にExample、最初のケースと同じ方法で、 の新しいインスタンスが再度作成されます。ただし、メンバー変数の内容は異なります。変数の値は、新しいインスタンスの作成後も何らかの形で「存続」しています。なんで?

これは予想される動作ですか?私は何を間違っていますか?

この特定のセッションは Python 2.7 で行われましたが、Python 3.3 でも同じように機能します。

ありがとう、ペトル

4

0 に答える 0