2001 Enchancement Wishlist

Fredrik Lundh fredrik at effbot.org
Fri Dec 29 16:31:29 EST 2000

Raymond Hettinger wrote:
> 3.  __init__ is the only special method that doesn't allow a return value.
>    I think it should continue to return the new object by default but also
>    allow another return item to be substituted.  For example:
>             def __init__( self ):
>                    if MyClass.aSingleton == None:
>                          MyClass.aSingleton = self
>                    return MyClass.aSingleton

doesn't make sense: __init__ *initializes* an instance
object, it doesn't create a new one.


if you still think creating new objects just to throw them
away really is a good idea, I'd rather see the return value
check changed from

    value = self.__init__(*args, **kwargs)
    assert value is None


    assert value is None or isinstance(value, self.__class__)

or even:

    assert value is None\
        or isinstance(value, types.InstanceType)\
        and value.__class__ is self.__class


allowing an arbitrary value (as long as it's not None) seems
like a really unpythonic idea.

(fwiw, singleton classes are pretty unpythonic too.  python
already has a framework for creating exactly one instance of
something: the module namespace).


More information about the Python-list mailing list