Paul McGuire wrote: > On Aug 16, 11:19 pm, Carsten Haese <[EMAIL PROTECTED]> wrote: >> On Thu, 2007-08-16 at 20:25 -0700, Paul McGuire wrote: >>> [...] >>> I've hacked out this recursivedefaultdict which is a >>> defaultdict(defaultdict(defaultdict(...))), arbitrarily deep depending >>> on the keys provided in the reference. >>> Please comment. >>> [...] >>> class recursivedefaultdict(object): >>> def __init__(self): >>> self.__dd = defaultdict(recursivedefaultdict) >>> def __getattr__(self,attr): >>> return self.__dd.__getattribute__(attr) >>> def __getitem__(self,*args): >>> return self.__dd.__getitem__(*args) >>> def __setitem__(self,*args): >>> return self.__dd.__setitem__(*args) >> This is shorter: >> >> from collections import defaultdict >> >> class recursivedefaultdict(defaultdict): >> def __init__(self): >> self.default_factory = type(self) >> >> -- >> Carsten Haesehttp://informixdb.sourceforge.net- Hide quoted text - >> >> - Show quoted text - > > Of course, very short and sweet! Any special reason you wrote: > self.default_factory = type(self) > instead of: > self.default_factory = recursivedefaultdict > ? It's more robust under subclassing.
regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://del.icio.us/steve.holden --------------- Asciimercial ------------------ Get on the web: Blog, lens and tag the Internet Many services currently offer free registration ----------- Thank You for Reading ------------- -- http://mail.python.org/mailman/listinfo/python-list