def get(cls, name=__name__):
        """Return a Mapper instance with the given name.
           If the name already exist return its instance.

           Does not work if a Mapper was created via its constructor.

           Using `Mapper.get()`_ is the prefered way.

        Args:
            name (str, optional): Name for the newly created instance.
                Defaults to `__name__`.

        Returns:
            Mapper: A mapper instance for the given name.

        Raises:
            TypeError: If a invalid name was given.
        """
        if not isinstance(name, str):
            raise TypeError('A mapper name must be a string')

        if name not in cls.__instances:
            cls.__instances[name] = cls()
            cls.__instances[name]._name = name

        return cls.__instances[name]