Kaydet (Commit) b859c070 authored tarafından Raymond Hettinger's avatar Raymond Hettinger

SF bug #800796: Difference between hash() and __hash__()

slice(5).__hash__() now raises a TypeError.
üst a1a1dba2
......@@ -14,6 +14,11 @@ class SliceTest(unittest.TestCase):
def test_repr(self):
self.assertEqual(repr(slice(1, 2, 3)), "slice(1, 2, 3)")
def test_hash(self):
# Verify clearing of SF bug #800796
self.assertRaises(TypeError, hash, slice(5))
self.assertRaises(TypeError, slice(5).__hash__)
def test_cmp(self):
s1 = slice(1, 2, 3)
s2 = slice(1, 2, 3)
......
......@@ -278,6 +278,13 @@ slice_compare(PySliceObject *v, PySliceObject *w)
return result;
}
static long
slice_hash(PySliceObject *v)
{
PyErr_SetString(PyExc_TypeError, "unhashable type");
return -1L;
}
PyTypeObject PySlice_Type = {
PyObject_HEAD_INIT(&PyType_Type)
0, /* Number of items for varobject */
......@@ -293,7 +300,7 @@ PyTypeObject PySlice_Type = {
0, /* tp_as_number */
0, /* tp_as_sequence */
0, /* tp_as_mapping */
0, /* tp_hash */
(hashfunc)slice_hash, /* tp_hash */
0, /* tp_call */
0, /* tp_str */
PyObject_GenericGetAttr, /* tp_getattro */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment