[Python-Dev] unsubscriptable vs object does not support indexing (original) (raw)

Ben Finney ben+python at benfinney.id.au
Thu Sep 24 02:10:43 CEST 2009


Steven D'Aprano <steve at pearwood.info> writes:

As far as I can see, in practice, people talk about obj[i] as the item at index i, not the item at subscript i -- the term "subscript" in this context seems to be rare to non-existent except for the error message.

Presumably, the same people would also call ‘obj[i]’ the item at key ‘i’, if ‘obj’ is a dictionary. For an object that supports neither indexes nor keys, though, how is Python to know which the user meant? It's a single operation as far as the parser is concerned, so there needs to be a single term for it. That term is “subscript”.

Your point about the awkward word “unsubscriptable” is well-taken, though. Perhaps a simple improvement to the message wording:

>>> foo = 3
>>> foo[6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object does not support subscripts
>>> foo['spam']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object does not support subscripts

-- \ “I lost a button-hole.” —Steven Wright | `\ | o_) | Ben Finney



More information about the Python-Dev mailing list