I'm wondering if there's a way in python to cause __init__ to return a class other than the one initially specified. My use case is that I'd like to have a superclass that's capable of generating an instance of a random subclass.
I've tried both returning the subclass (as I would when overloading an operator) but I get the complaint that __init__ wants to return None instead of a type. The other thing I tried was overwriting 'self' while inside __init__ but that doesn't seem to work either. class Parent(object): def __init__(self, foo): if foo == True: self = Child(foo) class Child(Parent): def __init__(self, foo): pass Is there a way to do this? -- http://mail.python.org/mailman/listinfo/python-list