'Returns a  substring. If index is an integer, returns a Python
string of a single character. If a range is given, e.g. `blob[3:5]`,
a new instance of the class is returned.'

def __getitem__(self, index):

    if isinstance(index, int):
        return self._strkey()[index]
    else:
        return self.__class__(self._strkey()[index])
