Как набор Python ([]) проверяет, равны ли два объекта? Какие методы необходимо определить объект для настройки этого?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как набор Python ([]) проверяет, равны ли два объекта? Какие методы необходимо определить объект для настройки этого?

Сообщение Anonymous »

Мне нужно создать объект или класс «контейнера» в Python, который ведет запись других объектов, которые я также определяю. Одним из требований этого контейнера является то, что если два объекта считаются идентичными, один (один из них) удаляется. Моя первая мысль заключалась в том, чтобы использовать набор ([]) в качестве содержащегося объекта, чтобы выполнить это требование. < /p>

Однако набор не удаляет один из двух идентичных экземпляров объекта. Что я должен определить, чтобы создать его? < /p>

Вот код Python. < /p>

Код: Выделить всё

class Item(object):
def __init__(self, foo, bar):
self.foo = foo
self.bar = bar
def __repr__(self):
return "Item(%s, %s)" % (self.foo, self.bar)
def __eq__(self, other):
if isinstance(other, Item):
return ((self.foo == other.foo) and (self.bar == other.bar))
else:
return False
def __ne__(self, other):
return (not self.__eq__(other))
< /code>

 интерпретатор < /strong> < /p>

>>> set([Item(1,2), Item(1,2)])
set([Item(1, 2), Item(1, 2)])
Понятно, что __eq __ () , который вызывается x == y , не является методом, вызванным набором. Как называется? Какой другой метод я должен определить? < /P>

Примечание: < /em> s должен оставаться изменчивым и может измениться, поэтому я не могу предоставить

Код: Выделить всё

__hash__()
Метод. Если это единственный способ сделать это, то я переписываю для использования неизменного элемента s.

Подробнее здесь: https://stackoverflow.com/questions/394 ... -does-an-o
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»