Not that this doesn't work, but wouldn't it be easier to use a metaclass for this.  Something like this:

```python
class _Singleton(type):
    _instances = {}
    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]

class SingletonType(_Singleton('SingletonMeta', (object,), {}), Type):
    pass
    # rest of the class without __new__
```