Рассмотрим модель данных, которая имеет ключ списка.
class A:
def __init__(self, name, template_list=None):
self.name = name
self.template_list = template_list
def __eq__(self, o: object) -> bool:
id_check = self.name == o.name
list_check = True
for k, v in enumerate(self.template_list):
if self.template_list[k] != o.template_list[k]:
list_check = False
return id_check and list_check
def __hash__(self) -> int:
hashcode = 0
for item in self.template_list:
hashcode = hashcode + hash(item)
return hash(hashcode) + hash(self.name)
def create_list():
a1 = A(1, [1])
a3 = A(1, [1])
set1 = set()
set1.add(a1)
set1.add(a3)
print(len(set1))
create_list()
В вышеприведенном случае для реализации метода ha sh вычисляется ha sh каждого элемента списка и добавлено.
Это способ записи для метода ha sh для этой модели?
Меня беспокоит случай, когда список
(a, b ) список (c, д)
га sh (а) = 2, га sh (б) = 3 га sh (c) = 1, га sh (d) = 4
, и оба добавленных значения ha sh становятся равными 5, и набор теряет свое предназначение. Это возможно?