Python 2.7 哈希对象的repr而不是属性的元组

Python 2.7 哈希对象的repr而不是属性的元组,python-2.7,hash,Python 2.7,Hash,覆盖自定义对象的\uuuu hash\uuu()方法的一种常见方法是使用对象属性创建一个元组t,并应用返回哈希(t),如本节所述 我有一个程序在做这个,在运行cProfile之后,我发现这种方法是我程序的瓶颈。我做了以下测试并得到了结果: >>> t1 = tm.Timer(setup="x = str((10,12))", stmt="hash(x)") >>> t2 = tm.Timer(setup="x = (10,12)", stmt="hash(x)

覆盖自定义对象的
\uuuu hash\uuu()
方法的一种常见方法是使用对象属性创建一个元组
t
,并应用
返回哈希(t)
,如本节所述

我有一个程序在做这个,在运行cProfile之后,我发现这种方法是我程序的瓶颈。我做了以下测试并得到了结果:

>>> t1 = tm.Timer(setup="x = str((10,12))", stmt="hash(x)")
>>> t2 = tm.Timer(setup="x = (10,12)", stmt="hash(x)")
>>> min(t1.repeat(100)), min(t2.repeat(100))
(0.04663395881652832, 0.05523419380187988)
由此我得出结论,在哈希函数上使用字符串比
使用元组。考虑到我已经使类中的每个对象的
\uuu repr\uuu()
实现都是唯一的,我认为这应该不会有任何问题。在更改我的程序之前,这种方法(或我的测试方法)是否有任何可能的问题?

你不应该在基准测试中包括字符串创建和元组创建吗?在我的例子中不是。元组/字符串只创建一次,哈希函数与它们一起执行多次。如果字符串/元组不变,则哈希结果相同。为什么需要一次又一次地调用它?不应该在基准测试中包含字符串创建和元组创建吗?在我的例子中不是。元组/字符串只创建一次,哈希函数与它们一起执行多次。如果字符串/元组不变,则哈希结果相同。你为什么要一次又一次地给它打电话?