我有兩個類。一個在其構造函數中實例化另一個的。在另一個類的構造函數中實例化一個類的唯一實例
class Details(object):
pass
class Overview(object):
def __init__(self, details = Details()):
self.details = details
當我創建兩個概覽實例時,它們會更改同一個實例的詳細信息。不應該在每個實例化過程中創建一個新的Details()實例?
ov1 = Overview()
ov2 = Overview()
print(id(ov1.details))
print(id(ov2.details))
# 2940786890344
# 2940786890344
它們都指向默認實例('details = Details()'),因爲您沒有將任何內容傳遞給'Overview'構造函數。 – Carcigenicate
正確,但不應該默認實例是一個新的實例細節?每次構造函數被調用時,Details都被創建,存儲在'details'中,然後存儲在self.details中。 – nven
請參閱下面的答案。 – Carcigenicate