[Python-Dev] Py3k: magical dir()

Guilherme Polo ggpolo at gmail.com
Fri Dec 19 16:23:55 CET 2008


On Fri, Dec 19, 2008 at 12:20 PM, Dmitry Vasiliev <dima at hlabs.spb.ru> wrote:
> Hello!
>
> I think it's a strange behavior:
>
> Python 3.1a0 (py3k:67851, Dec 19 2008, 16:50:32)
> [GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> hash(range(10))
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
> TypeError: unhashable type: 'range'
>>>> dir(range(10))
> ['__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__',
> '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__',
> '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__',
> '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__',
> '__sizeof__', '__str__', '__subclasshook__']
>>>> hash(range(10))
> -1211318616
>>>> hash(range(1000))
> -1211318472
>

There are other ways to reproduce it without using dir, like
range(10).__class__; hash(range(10))

Is there some reason no set tp_hash for rangeobject to
PyObject_HashNotImplemented ?

> --
> Dmitry Vasiliev (dima at hlabs.spb.ru)
>  http://hlabs.spb.ru



-- 
-- Guilherme H. Polo Goncalves


More information about the Python-Dev mailing list