【发布时间】:2012-05-19 19:30:57
【问题描述】:
我有一个像这样的Person 类:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return '<Person {}>'.format(self.name)
我想将此类的一些实例添加到集合中,如下所示:
tom = Person('tom', 18)
mary = Person('mary', 22)
mary2 = Person('mary2', 22)
person_set = {tom, mary, mary2}
print(person_set)
# output: {<Person tom>, <Person mary>, <Person mary2>}
如您所见,集合中有 2 个玛丽。我怎样才能使具有相同年龄的Person 实例被视为同一个人,并且只添加到集合中一次?
换句话说,我怎样才能得到{<Person tom>, <Person mary>}的结果?
【问题讨论】:
-
那么,例如,如果您只是按年龄进行比较,
Frank, age 19会与Heather, age 19相同吗? -
是的,只有第一个添加到集合中的才会被存储
-
@sashimi,那么你需要一个以年龄为键,以Person对象为值的字典。
-
@spinlok 我认为他只需要实现
__hash__。