我有一个关于Python 中的类初始化函数的查询。我正在尝试创建一个文本冒险游戏类型的环境,每个房间都有一个“项目”属性,存储为一个列表。我尝试了以下方法:
教室:
def __init__(self,items=[]):
self.items=items
但是我发现,每个在启动时没有定义项目的房间不仅会得到一个空列表,还会得到相同的空列表。现在,如果我创建一堆房间并将一个项目附加到其中一个,则该项目会出现在每个房间中。
很容易修复(手动为每个房间分配一个空列表),但我不明白为什么会发生这种情况。我会想象创建房间 a 会将 a.items 创建为一个空列表,而房间 b 将创建 b.items。但是谁能解释为什么这些会是相同的?有没有办法用默认值生成上述函数,每次都创建一个不同的列表?
干杯,
比利。