Настройка пересечения набора в Python - PullRequest
0 голосов
/ 31 марта 2020

Я прочитал все посты о том, как настроить пересечение множества в Python, и я пробовал эту концепцию на своем ноутбуке, когда я просто не могу понять, почему это не работает, как ожидалось. Вот мой код:

class ComparableWord:
    def __init__(self, word: str):
        self.word = word

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

    def __eq__(self, other):
        print("Finally ....")
        return self.word.lower() == other.word.lower()


first = [ComparableWord(word) for word in ["Jack", "Mike", "John", "Paul"]]
second = [ComparableWord(word) for word in ["jack", "Leo", "paul"]]

print("Intersection...")

for word in set(first).intersection(set(second)):
    print(word.word)

print("Union..")

for w in set(first).union(set(second)):
    print(w.word)

Вывод, который он выдает, следующий:

Intersection...
Union..
Mike
jack
Jack
John
paul
Leo
Paul

Может кто-нибудь указать, что идет не так. Кроме того, в качестве побочного запроса кто-то может также сказать мне, как напечатать аннотацию other в методе:

def __eq__(self, other):
    print("Finally ....")
    return self.word.lower() == other.word.lower()

Большое спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...