Função que retorna uma nova instância de uma classe

Alguém sabe me explicar pq essa função não está retornando uma nova instância. Ela retorna um objeto monstro, exatamente como eu quero, mas quando o monstro morre, a nova instância que ele retorna volta exatamente como o monstro antigo que já foi morto.

def new(self, name):     monster = self._monsters.get(name) # Dicionário que contém todos os monstros     instance = Monster(name=name) # Cria um novo monstro     for attr in monster.__dict__:         # Pega os atributos de um monstro existente o coloca na nova instância         instance.__setattr__(attr, monster.__dict__[attr])      return instance