我有一个类MyClass
,在这里我也重写了__eq__
方法来比较该类的两个对象,我可以这样做:
obj1 = MyClass(a = 2)
obj2 = MyClass(a = 2)
obj1 == obj2 # gives me True
现在,我的问题是我有两个包含此类的对象的列表,并且我想比较这两个列表的set
是否相同。这样我期望:
list1 = [MyClass(a=1), MyClass(a=2)]
list2 = [MyClass(a=2), MyClass(a=1)]
set(list1) == set(list2)
给我True
。但是我遇到了这个错误:
TypeError: unhashable type: 'MyClass'
这显然是由于set()
行。我怎样才能做到这一点? (只要我可以比较两个比较的对象列表,而不管它们的顺序如何,我都不在乎是否使用set
。)