Another one: Instead of: def has_key(self,key): for level in xrange(0,len(self._levels)) : if self._levels[level].has_key(key) : return True return False
do: def has_key(self,key): return any((key in l) for l in self._levels) Ony one "self" reference, and any-through-iterator is very fast, as it's native python code (probably implemented in C). And lazy evaluating. It's challenging to understand your code. Maybe it's easier if you explain in words-only how you want to implement inheritance. ------------------------- My approach would be like this For a template called 'x', create a dictionary 'x' with maps the block names for this template to a func with it's matching implementation code. Somehow, a method render_block(name) should be made available. So when a blocks are nested, one block should be able to call render_block(other_name). The render_block method should do a lookup in the dictionary for a block with this name, and call it. Dynamic inheritance can easily be realized by replacing key/value pairs in this dict by other implementations. Pass the original implementation to the new implementation as an additional function parameter. (As a curry.) I guess it's fast, and can be cached in memory. For each rendering, only a copy of the required template dictionaries have to be made. (Not even a deep copy.) ----------------------- Cheers, Jonathan -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.