> Thanks, that's awesome! Definitely not something I'd have ever been able > to work out myself - I think I need to learn more about nested functions > and introspection.
I've recently found nested functions incredibly useful in many places in my code, particularly as a way of producing functions that are pre-set with some initialization data. I've written a bit about it here: http://antroy.blogspot.com/ (the entry about Partial Functions) > > def memoizeMethod(cls, n, m): > > def decorated(self): > > if n in self._memo: return self._memo[n] > > result = self._memo[n] = m(self) > > return result > > decorated.__name__ = n > > setattr(cls, n, decorated) Couldn't this be more simply written as: def memoizeMethod(cls, n, m): def decorated(self): if not n in self._memo: self._memo[n] = m(self) return self._memo[n] decorated.__name__ = n setattr(cls, n, decorated) I've not seen the use of chained = statements before. Presumably it sets all variables to the value of the last one? -- http://mail.python.org/mailman/listinfo/python-list