У меня есть определение класса с функцией __hash__
, которая использует свойства объекта для создания уникального ключа для сравнения в наборах Python.
Хеш-метод выглядит следующим образом:
def __hash__(self):
return int('%d%s'%(self.id,self.create_key))
В модуле, отвечающем за реализацию этого класса, выполняется несколько запросов, которые могут создать дублирующие экземпляры этого класса, и очередь, созданная в функции, ответственной за это, представляется как набор, чтобы убедиться, что дубликаты могут быть опущены:
in_set = set()
out_set = set()
for inid in inids:
ps = Perceptron.getwherelinked(inid,self.in_ents)
for p in ps:
in_set.add(p)
for poolid in poolids:
ps = Perceptron.getwherelinked(poolid,self.out_ents)
for p in ps:
out_set.add(p)
return in_set.union(out_set)
(Не уверен, почему отступы здесь искажены)
Каким-то образом, несмотря на вызов метода union
, я все еще получаю два дублированных экземпляра. При распечатке (с помощью метода str в классе Perceptron, который просто вызывает hash ), эти два хэша идентичны, что теоретически не должно быть возможным.
set([1630, 1630])
Любое руководство будет оценено.