class NewDict( dict ):
default = None
def __init__( self ,init_dict ,default ):
self.default = default
for key ,value in init_dict.items( ):
if isinstance( value ,dict ):
init_dict[ key ] = self.__class__( value ,default )
return super( NewDict ,self ).__init__( init_dict )
def __missing__( self ,key ):
return self.default
def __getattr__( self ,key ):
return operator.getitem( self ,key )
def __setattr__( self ,key ,value ):
if key in dir( self ):
return super( NewDict ,self ).__setattr__( key ,value )
return operator.setitem( self ,key ,value )