On 2010-10-12, MRAB <pyt...@mrabarnett.plus.com> wrote: > The code does require Python 2 and the use of except ... as ... requires > at least version 2.6.
Whoops. > Line 51 > The __init__ method should always return None. There's no need to be > explicit about it, just use a plain "return". The real issue here is that I was assuming that open('nonexistent') returned None rather than raising an exception. > The error message says: > "Couldn't open %s to read a template." > but it's opening the file for writing. Ahh, my famed attention to detail strikes again. :) > You can't really rely on the destructor __del__ being called. Interesting. Do I just rely on files getting closed? > Line 333 > Shouldn't you be checking that the name of the attribute you're setting > doesn't clash with one of the existing attributes? Are you sure that a > dict wouldn't be a better idea? Actually, not sure at all. There's a sort of gradual evolution going on here, in that I was trying to avoid having a separate dict that I had to populate with a bunch of stuff -- thus the switch to a hand-written __getitem__. What I probably ought to do/have done is use a dict first, and set things in the dict from here, then check the dict first, then regular getattr, and so on. > Line 447 > > The form: > > except ... as ... > > is in Python versions >= 2.6, but not earlier. Oops. Is there a way to interact with the caught exception in earlier Python? > This use of del just deletes the name from the namespace and won't > necessarily call the __del__ method of the 'source' object. It's better > to rely on something more explicit like a 'close' method. (If you can't > be sure which version of Python it'll use then context managers are > probably out anyway!) Okay, good to know. I'll fix that. -s -- Copyright 2010, all wrongs reversed. Peter Seebach / usenet-nos...@seebs.net http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated! I am not speaking for my employer, although they do rent some of my opinions. -- http://mail.python.org/mailman/listinfo/python-list