#NEWLINE# def subprop( attr , subattr , doc = None , ro = False ) : #NEWLINE# #INDENT# def fget( self ) : #NEWLINE# #INDENT# return getattr ( getattr ( self , attr ) , subattr ) #NEWLINE# #UNINDENT# def fset( self , value ) : #NEWLINE# #INDENT# setattr ( getattr ( self , attr ) , subattr , value ) #NEWLINE# #UNINDENT# def fdel( self ) : #NEWLINE# #INDENT# delattr ( getattr ( self , attr ) , subattr ) #NEWLINE# #UNINDENT# return property ( fget , ( fset if ( not ro ) else None ) , ( fdel if ( not ro ) else None ) , doc )