Having a class that returns instances of some other class is horrible, but since you asked for it:
class A(object): pass class B(object): pass class Foo(object): def __new__(cls, arg): if arg=="a": return A() else: return B() print Foo("a") print Foo("b") Michele Simionato P.S. don't do it! -- http://mail.python.org/mailman/listinfo/python-list