私は2つのクラスを持っています。そのコンストラクタでもう一方をインスタンス化するもの。別のクラスコンストラクタでクラスの一意のインスタンスをインスタンス化します
class Details(object):
pass
class Overview(object):
def __init__(self, details = Details()):
self.details = details
概要のインスタンスを2つ作成すると、同じ詳細のインスタンスが変更されます。概要は、すべてのインスタンス化時にDetails()の新しいインスタンスを作成してはいけませんか?
ov1 = Overview()
ov2 = Overview()
print(id(ov1.details))
print(id(ov2.details))
# 2940786890344
# 2940786890344
'Overview'コンストラクタのいずれにも何も渡さなかったので、それらは両方ともデフォルトインスタンス(' details = Details() ')を指しています。 – Carcigenicate
デフォルトのインスタンスをDetailsの新しいインスタンスにするべきではありませんか?コンストラクターが呼び出されるたびに、Detailsが作成され、「詳細」に格納され、self.detailsに格納されます。 – nven
下記の答えをご覧ください。 – Carcigenicate