可能性の重複:私は明らかにここで何かが欠けてい
“Least Astonishment” in Python: The Mutable Default Argumentパイソン - 予期しない動作空のリストのデフォルト値を持つという名前のコンストラクタ引数を使用して
:誰もが「なぜt1
を説明することができます奇妙なことに、は、self.thelist
の値をt2
に取得しますか?私は間違って何をしていますか?
>>> class ThingyWithAList(object):
... def __init__(self, alist=[]):
... super(ThingyWithAList, self).__init__()
... self.thelist = alist
...
>>> t1 = ThingyWithAList()
>>> t1.thelist.append('foo')
>>> t1.thelist.append('bar')
>>> print t1, t1.thelist
<__main__.ThingyWithAList object at 0x1004a8350> ['foo', 'bar']
>>>
>>> t2 = ThingyWithAList()
>>> print t2, t2.thelist
<__main__.ThingyWithAList object at 0x1004a8210> ['foo', 'bar']
これをチェックしてください:http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument – mouad
@mouad - 素晴らしい、ありがとう!私はこの質問を掲示する前にそれほど注目していませんでしたが、これを見つけられませんでした。 –