def root_and_path(self):
        """:returns: a tuple (parent, [members,... ]"""
        rt = []
        curAttr = self
        while isinstance(curAttr.parent, AdHocTree):
            rt.append(curAttr.name)
            curAttr = curAttr.parent
        rt.reverse()
        return (curAttr.parent, rt)
def root_and_path ( self ) : rt = [ ] curAttr = self while isinstance ( curAttr . parent , AdHocTree ) : rt . append ( curAttr . name ) curAttr = curAttr . parent rt . reverse ( ) return ( curAttr . parent , rt )
:returns: a tuple (parent, [members,... ]