<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def sget(self, path, default=NONE_NODE):
 u"""Enables access to nodes if one or more of them don't exist. Example: text value 'attr text' 'text value' NONE_NODE Accessing nonexistent path returns None-like object with mocked converting functions which returns None: True """

        attrs = str(path).split(".")
        text_or_attr = None
        last_attr = attrs[-1]
        # Case of getting text or attribute
        if last_attr == '#text' or last_attr.startswith('@'):
            # #text => text, @attr => attr
            text_or_attr = last_attr[1:]
            attrs = attrs[:-1]
            # When getting #text and @attr we want default value to be None.
            if default is NONE_NODE:
                default = None

        my_object = self
        for attr in attrs:
            try:
                if isinstance(my_object, (list, tuple)) and re.match('^\-?\d+$', attr):
                    my_object_next = my_object[int(attr)]
                else:
                    my_object_next = getattr(my_object, attr)
                my_object = my_object_next
            except (AttributeError, KeyError, IndexError):
                return default

        # Return #text or @attr
        if text_or_attr:
            try:
                return my_object.getattr(text_or_attr)
            except AttributeError:
                # myObject can be a list.
                return None
        else:
            return my_object