Я прочитал все посты о том, как настроить пересечение множества в 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()
Большое спасибо за помощь.