(cls, node_property, data_property, default=None, \
            default_remove=[], \
            path=lambda x: x, getter=lambda x: x, setter=lambda x: x)
Binds the value of a child :class:`reconfigure.node.PropertyNode` to a property

        :param node_property: ``PropertyNode``'s ``name``
        :param data_property: property name to be created
        :param default: default value of the property (is ``PropertyNode`` doesn't exist)
        :param default_remove: if setting a value contained in default_remove, the target property is removed
        :param path: ``lambda self.node: PropertyNode``, can be used to point binding to another Node instead of ``self.node``.
        :param getter: ``lambda object: object``, used to transform value when getting
        :param setter: ``lambda object: object``, used to transform value when setting
Binds the value of a child :class:`reconfigure.node.PropertyNode` to a property
Binds the value of a child : class : reconfigure . node . PropertyNode to a property
def bind_property(cls, node_property, data_property, default=None, \
            default_remove=[], \
            path=lambda x: x, getter=lambda x: x, setter=lambda x: x):
        """
        Binds the value of a child :class:`reconfigure.node.PropertyNode` to a property

        :param node_property: ``PropertyNode``'s ``name``
        :param data_property: property name to be created
        :param default: default value of the property (is ``PropertyNode`` doesn't exist)
        :param default_remove: if setting a value contained in default_remove, the target property is removed
        :param path: ``lambda self.node: PropertyNode``, can be used to point binding to another Node instead of ``self.node``.
        :param getter: ``lambda object: object``, used to transform value when getting
        :param setter: ``lambda object: object``, used to transform value when setting
        """
        def pget(self):
            prop = path(self._node).get(node_property)
            if prop is not None:
                return getter(prop.value)
            else:
                return default

        def pset(self, value):
            if setter(value) in default_remove:
                node = path(self._node).get(node_property)
                if node is not None:
                    path(self._node).remove(node)
            else:
                path(self._node).set_property(node_property, setter(value))

        cls.bind(data_property, pget, pset)
def bind_property ( cls , node_property , data_property , default = None , default_remove = [ ] , path = lambda x : x , getter = lambda x : x , setter = lambda x : x ) : def pget ( self ) : prop = path ( self . _node ) . get ( node_property ) if prop is not None : return getter ( prop . value ) else : return default def pset ( self , value ) : if setter ( value ) in default_remove : node = path ( self . _node ) . get ( node_property ) if node is not None : path ( self . _node ) . remove ( node ) else : path ( self . _node ) . set_property ( node_property , setter ( value ) ) cls . bind ( data_property , pget , pset )