def __init__(self, locations=None, separation_char=os.sep):
super(LocationDescriptor, self).__init__()<EOL>self._separation_char = separation_char<EOL>if isinstance(locations, list):<EOL><INDENT>self._locations_list = list(locations)<EOL><DEDENT>elif isinstance(locations, str) or isinstance(locations, unicode):<EOL><INDENT>self._locations_list = locations.split(self._separation_char)<EOL><DEDENT>elif locations is None:<EOL><INDENT>self._locations_list = list()<EOL><DEDENT>else:<EOL><INDENT>raise TypeError("<STR_LIT>")<EOL><DEDENT>
Constructor.

Args:
    locations: Can be either a string with sub-strings joined by the separation character or a list of strings,
        each giving a location.
    separation_char: Separation character in the location string.

Raises:
    TypeError: if argument is not recognized as either a string, a list of strings or ``None``.

Notes:
    Empty :class:`LocationDescriptor`s **are** allowed and empty locations are also allowed.