>>> a = tree() >>> a.__getattr__ = a.__getitem__
It errors for you because it is a defaultdict instance and doesn't allow attribute overwrites.
This should work:
class tree(defaultdict): def __init__(self): defaultdict.__init__(self, tree) __getattr__ = defaultdict.__getitem__ __setattr__ = defaultdict.__setitem__