相关疑难解决方法(0)

如何使一个对象适当地清洗?

这是我的代码:

class Hero:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name + str(self.age)

    def __hash__(self):
        print(hash(str(self)))
        return hash(str(self))

heroes = set()

heroes.add(Hero('Zina Portnova', 16)) # gets hash -8926039986155829407
print(len(heroes)) # gets 1

heroes.add(Hero('Lara Miheenko', 17)) # gets hash -2822451113328084695
print(len(heroes)) # gets 2

heroes.add(Hero('Zina Portnova', 16)) # gets hash -8926039986155829407
print(len(heroes)) # gets 3! WHY?
Run Code Online (Sandbox Code Playgroud)

为什么会这样?
第一个和第三个对象具有相同的内容和相同的散列但是len()讲述了3个唯一对象?

python python-3.x

49
推荐指数
3
解决办法
2万
查看次数

标签 统计

python ×1

python-3.x ×1