我试图随机生成对象并将其附加到一个集合,但后来的代码以某种奇怪的方式表现,具有重复的对象(即,在调用 id(x) 时返回相同数字的对象)。我的问题是,在下面的代码中,“newanimal”始终是一个新实例,还是我在重复对象并更改它们?
from random import randint, choice
Animals_to_choose = [Passaro(), Sapo(), Rato(), Coelho(), Cobra(), Tartaruga(), Lobo()]
someset = set()
n_animals_to_create = 10
for number in range(n_animais_to_create):
newanimal = choice(Animals_to_choose)
newanimal.number = number
someset.add(newanimal)
需要指出的是,所有这些类都继承了这些定义:
def __hash__(self):
return self.number
def __eq__(self, other):
return self.number == other.number