Sobes.tech
Junior — Middle
86

Comment peut-on ajouter des objets d'une classe personnalisée à une structure de données basée sur un ensemble en Python?

Réponse de l'IA

sobes.tech IA

Чтобы добавить объекты пользовательского класса в множество (set) в Python, эти объекты должны быть хешируемыми и сравнимыми, так как множество использует хеширование для быстрого поиска.

Для этого нужно реализовать в классе методы __hash__ и __eq__. Например:

class MyClass:
    def __init__(self, value):
        self.value = value

    def __eq__(self, other):
        if isinstance(other, MyClass):
            return self.value == other.value
        return False

    def __hash__(self):
        return hash(self.value)

obj1 = MyClass(10)
obj2 = MyClass(20)
obj3 = MyClass(10)

my_set = {obj1, obj2}
print(obj3 in my_set)  # True, так как obj3 равен obj1 по значению

Без реализации этих методов объекты будут считаться разными, даже если их содержимое одинаково, и не смогут корректно использоваться в множестве.