Brett Cannon wrote:
On Wed, Sep 23, 2009 at 14:19, Michael Foord
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