空の辞書が割り当てられるBox
代わりに、の新しいインスタンスでボックスを再割り当てself.things
すると、前のインスタンスと同じデータが含まれます。
私はPython3.7.3を使用しています
import random
class Box:
def __init__(self, things = {}):
self.things = things
def __str__(self):
return str(self.things)
def put_thing_in_location(self, thing, location):
self.things[location] = thing
for i in range(2):
box = Box()
print(box)
box.put_thing_in_location(
random.randrange(10000),
random.randrange(10000)
)
出力:
$ python bugTest.py
{}
{652: 8968}
引数が渡されない場合things
、の新しいインスタンスはBox
空の辞書になると思います。代わりにthings
、の前のインスタンスから保持しますBox
。
問題は、デフォルトとまったく同じ辞書をインスタンスに割り当てているため、すべてのインスタンスで共有していることです。コンストラクターをに変更します
def __init__(self, things=None):
self.things = {} if things is None else things
これにより、何も指定されていない場合、各インスタンスがデフォルトとして新しい辞書を使用するようになります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加