def overridable_property(name, doc=None):
 getter_name = intern(('get_' + name))
 setter_name = intern(('set_' + name))
 return property((lambda self: getattr(self, getter_name)()), (lambda self, value: getattr(self, setter_name)(value)), None, doc)

def overridable_property ( name , doc = None ) : getter_name = intern ( ( 'get_' + name ) ) setter_name = intern ( ( 'set_' + name ) ) return property ( ( lambda self : getattr ( self , getter_name ) ( ) ) , ( lambda self , value : getattr ( self , setter_name ) ( value ) ) , None , doc )
creates a property which calls methods get_xxx and set_xxx of the underlying object to get and set the property value .