Создайте ha sh для модели данных, у которой есть список - PullRequest
0 голосов
/ 24 апреля 2020

Рассмотрим модель данных, которая имеет ключ списка.

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, и набор теряет свое предназначение. Это возможно?

...