У меня есть набор объектов Point, и я хотел бы иметь возможность удалить эти объекты из моего набора. Однако Python, похоже, сравнивает их по указателю, а не по значению, поэтому я не могу легко удалить элементы, поскольку они не имеют одинакового указателя, поскольку они не являются точно одинаковыми объектами. Это проблема только с объектами, а не с примитивами.
Упрощенный пример моей проблемы:
class Point():
def __init__(self, x, y):
self.x = x
self.y = y
a = set()
a.add(Point(0, 0))
b = Point(0, 0)
a.remove(b)
При запуске возвращается
Traceback (most recent call last):
File "example.py", line 9, in <module>
a.remove(b)
KeyError: <__main__.Point object at 0x7f6292376128>
(очевидно, конкретный указатель меняется при каждом запуске).
Я бы предпочел удалить элемент (0, 0)
из a
, оставив a
пустым множеством.