Почему мой пользовательский объект не работает в качестве ключа словаря даже после реализации __hash__ и __eq__? [закрытPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой пользовательский объект не работает в качестве ключа словаря даже после реализации __hash__ и __eq__? [закрыт

Сообщение Anonymous »

Я пытаюсь использовать экземпляры пользовательского класса Python в качестве ключей в словаре. Я переопределял оба метода __hash __ () и __eq __ () , но каким -то образом поиск словаря по -прежнему не проходят, казалось бы, идентичные ключи.

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

class Book:
def __init__(self, title, author):
self.title = title
self.author = author

def __eq__(self, other):
return isinstance(other, Book) and self.title == other.title and self.author == other.author

def __hash__(self):
return hash((self.title, self.author))

book1 = Book("Wings of Fire", "A.P.J. Abdul Kalam")
book2 = Book("Wings of Fire", "A.P.J. Abdul Kalam")

books_dict = {book1: "Autobiography"}

print(book2 in books_dict)
Поскольку book1 и book2 имеют одинаковые данные, и оба __eq __ и __hash __ определены, я ожидал книги2 в books_dict , чтобы вернуть true .

Подробнее здесь: https://stackoverflow.com/questions/796 ... implementi
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Изменение поведения ключа словаря сеанса Flask при использовании другого ключа
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Изменение поведения ключа словаря сеанса Flask при использовании другого ключа
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Объект «Hashlib.HASH» не подлежит подписке.
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Cosstream был закрыт и не может быть прочитал. Возможно, его ограждающий PDDOCUMENT был закрыт?
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Десериализовать JSON с помощью вложенного словаря с DateTime в качестве ключа
    Гость » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Гость

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