2016-05-07 7 views

答えて

2

contentsは、デフォルトの可変引数です。デフォルト値(空のリスト)は、すべての呼び出しではなく、1回だけ作成されます。

は、ここで詳細は:本当だが、私はそれが質問を完全に対処していることはよく分からない http://docs.python-guide.org/en/latest/writing/gotchas/

+0

。インスタンス化されたオブジェクトを再度呼び出さず、何かを追加し、同じクラスの別のインスタンス化されたオブジェクトに追加しました。インスタンス化されたオブジェクトのリストに物を追加できないのは本当ですか? –

+0

私が知る限り、デフォルトの引数は関数のスコープ内に作成され、それはクラスのスコープ内で作成されます。したがって、「部屋」のすべてのインスタンスがリストを共有します。それぞれのインスタンスを独立させたい場合は、それぞれのインスタンスに個別のリストを渡すことができます: 'Room( 'living room'、contents = [])' – jab

+0

ありがとう、ありがとう。私がやったことは、__init__メソッドの本体にself.contents = []を入れて、引数から内容を除外しただけです。 –

関連する問題