Is there a reason or a rule by which CPython reports different error message 
for different failures to subscript?

For example:

>>> set()[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
>>> class c(object): pass
...
>>> c()[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'c' object does not support indexing

But compare this to:

>>> [].append[42]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is unsubscriptable
>>> (lambda: 42)[42]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'function' object is unsubscriptable
>>> property()[42]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'property' object is unsubscriptable

IronPython had a bug report that we were getting this wrong for set objects and 
that "does not support indexing" was also a clearer error message.  I'm 
wondering if there's some reason why the different error messages occur which 
I'm missing.   Otherwise I could switch to using the more clear message or 
start marking types which should report the unsubscriptable error.  Does anyone 
have any insights into this?
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to