【发布时间】:2019-04-27 13:02:15
【问题描述】:
我正在尝试找到一种方法来比较集合中的对象以使 & 运算符在它们上正常工作。
我试图找到设置函数intersect() 的源代码,但毫无希望。我试图重载等号运算符,但是当我将__eq__() 函数添加到类定义中时,Person 对象变得不可散列。
class Person:
def __init__(self, dictionary):
self.dictionary = dictionary
def foo1():
first_set.add(Person({"age" : 20}))
def foo2():
second_set.add(Person({"age" : 20}))
first_set = set()
second_set = set()
foo1()
foo2()
print(first_set)
print(second_set)
print(first_set & second_set) # I'd like to get non-empty intersection here
我认为它可以通过__eq__() 重载以某种方式工作,但这是不可能的。
【问题讨论】:
-
使用ABC Set类并覆盖
__eq__方法,docs.python.org/3/library/…