[Python-Dev] unsubscriptable vs object does not support indexing
Michael Foord
fuzzyman at voidspace.org.uk
Wed Sep 23 23:49:38 CEST 2009
Brett Cannon wrote:
> On Wed, Sep 23, 2009 at 14:19, Michael Foord <fuzzyman at voidspace.org.uk> wrote:
> [SNIP]
>
>> Also +1. I had a friend (an experienced programmer) who started using Python
>> recently. The cryptic nature of some of the error messages was a sore point
>> with him.
>>
>
> Do you know which error messages? We can change them. We have always
> said that we view exception messages as something that can change in
> minor releases and that you should be very careful if you ever use
> them in tests.
>
There were a couple and I can only remember the last one he talked
about. He ran some code with "python -3" that used someone else's
library and resulted in the following warning, that he felt was cryptic:
DeprecationWarning: Overriding __eq__ blocks inheritance of __hash__
in 3.x
Hmm... not entirely sure how we can make it clearer. There is a great
blog entry on the subject by Eric Lippert though (Microsoft I'm afraid):
http://blogs.msdn.com/ericlippert/archive/2006/07/07/659259.aspx
Error messages: diagnostic is preferable to prescriptive
* Polite: making the user feel like an idiot is very, very bad.
* Readable: poor grammar and tortured sentence structure is bad.
* Accurate: error messages must accurately describe the problem.
* Precise: "Something is wrong" is an accurate error message but not
a very precise one!
* Diagnostic but not prescriptive: describe the problem, not the
solution.
How about (?):
If you implement equality (__eq__) you should also implement hashing
(__hash__), it won't be inherited in 3.x.
Although that is prescriptive of course...
Michael
> -Brett
>
--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog
More information about the Python-Dev
mailing list