我如何通过python实现一个对象的更改不会更改另一个对象

我如何通过python实现一个对象的更改不会更改另一个对象,python,class,Python,Class,我尝试将两个对象实例化为一个有卧室和客厅的房子。 如果我换一间房子里的家具,另一间不应该换 class room: def __init__(self,name,piecesoffurniture): self.name=name self.piecesoffurniture=piecesoffurniture class house: def __init__(self,rooms): self.rooms=rooms bedr

我尝试将两个对象实例化为一个有卧室和客厅的房子。 如果我换一间房子里的家具,另一间不应该换

class room:
    def __init__(self,name,piecesoffurniture):
        self.name=name
        self.piecesoffurniture=piecesoffurniture
class house:
    def __init__(self,rooms):
        self.rooms=rooms

bedroom=room("bedroom",2)
livingroom=room("livingroom",3)
rooms=[]
rooms.append(bedroom)
rooms.append(livingroom)
myhouse=house(rooms)
yourhouse=house(rooms)
myhouse.rooms[0].piecesoffurniture=4
print(bedroom.piecesoffurniture)
print(yourhouse.rooms[0].piecesoffurniture)
输出:

四,

四,


这是我的程序的示例代码,其中room的构造函数非常慢,house的构造函数非常快。

在这两种情况下,您使用的是相同的列表。在实例化类之前复制列表。除此之外,python类名应该大写可能是(im)可变对象的一个很好的通用读物:特别是第2点。调试使用
CamelCaseNames
作为班级-
教室
教室
,这有助于在代码中识别班级。许多IDE对这些名称使用特殊的颜色以使其更具可读性,甚至Stackoverflow对
CamelCaseNames
也使用其他颜色。您还可以在
=
周围使用空格使其更具可读性-查看更多信息,因此我复制了我的列表,但输出保持不变:卧室=房间(“卧室”,2)客厅=房间(“客厅”,3)房间=[]房间。追加(卧室)房间。追加(客厅)房间1=房间房间2=房间myhouse=房子(房间1)yourhouse=house(room2)myhouse.rooms[0]。计件家具=4打印(卧室.计件家具)打印(yourhouse.rooms[0]。计件家具)输出:4您在两种情况下使用的列表相同。在实例化类之前复制列表。除此之外,python类名应该大写可能是(im)可变对象的一个很好的通用读物:特别是第2点。调试使用
CamelCaseNames
作为班级-
教室
教室
,这有助于在代码中识别班级。许多IDE对这些名称使用特殊的颜色以使其更具可读性,甚至Stackoverflow对
CamelCaseNames
也使用其他颜色。您还可以在
=
周围使用空格使其更具可读性-查看更多信息,因此我复制了我的列表,但输出保持不变:卧室=房间(“卧室”,2)客厅=房间(“客厅”,3)房间=[]房间。追加(卧室)房间。追加(客厅)房间1=房间房间2=房间myhouse=房子(房间1)yourhouse=house(room2)myhouse.rooms[0]。计件家具=4打印(卧室.计件家具)打印(yourhouse.rooms[0]。计件家具)输出:4