誰かが私に次のコードを説明してください。Pythonでクラスの異なるインスタンスを作成する方法は?
class InnerTest:
def __init__(self, value = 0):
self.value = value
class OuterTest:
def __init__(self, inner_test = InnerTest()):
self.inner_test = inner_test
a = OuterTest()
b = OuterTest()
a.inner_test.value = 42
print b.inner_test.value
それは42を出力し、私はInnerTestそれぞれの別個のインスタンスを含むであろうOuterTestの2つのインスタンスを作成することを意味0
を期待。代わりに、InnerTestの同じインスタンスを参照するOuterTestのインスタンスが2つあります。
また、私が欲しいものを実装する正しい方法は何ですか?
@PadraicCunningham必ずしも引数を渡す必要はありません。この場合、 'None'となり、関数内で初期化することができます。 –
@PadraicCunninghamいいえ、問題は同じではありません。値が 'None'であれば、' a'と 'b'の両方で' if'の内部に 'InnerTest'の2つの異なるインスタンスを作成します。 –
これは正解です。何が起きているのかを説明し、デフォルトパラメータの利便性を保ちながら別個のインスタンスを作成する実用的なソリューションを提供します。ありがとう。 – marcv81