def __init__( self, path, allow_write=True ):
        """Create a new Ref instance.

        path
            The path to traverse from the context object to reach the target.
            Child lookups should be in property dot syntax (e.g. obj1.obj2.target).
            For Blocks that are constructed by other Blocks, you can use the _parent property
            to traverse up the stack.

        allow_write
            Allow modification of the target with the set() method.
        """
        # very simple path syntax for now: walk down the chain of properties
        if not type( path ) == str:
            raise TypeError( 'path argument to Ref() should be a string' )
        self._path = tuple( path.split( '.' ) )
        self._allow_write = allow_write
def __init__ ( self , path , allow_write = True ) : if not type ( path ) == str : raise TypeError ( 'path argument to Ref() should be a string' ) self . _path = tuple ( path . split ( '.' ) ) self . _allow_write = allow_write
Create a new Ref instance.

        path
            The path to traverse from the context object to reach the target.
            Child lookups should be in property dot syntax (e.g. obj1.obj2.target).
            For Blocks that are constructed by other Blocks, you can use the _parent property
            to traverse up the stack.

        allow_write
            Allow modification of the target with the set() method.