BrJohan wrote: > I'm in need of help to solve this Python (ver. 3.3) problem: > > I have a hierarchy of classes (SubA, SubAB, SubB, ..., SubBCA, > SubC,...), each of which is inheriting from a chain of superclasses with > a common baseclass(Sup) on top. (So far, no problem) > > Now, I want to create instances of the correct subclasstype as decided > by the common baseclass, like this: > > i = Sup(args_allowing_the_baseclass_to_deduce_correct_subclass) > > where i can be of any class except Sup itself (as decided by Sup) > > Now, the problem: > > How to design the __new__() and __init__() methods for the various > classes in order to achieve what I want? > > (Some ten years I had the same problem (in a different context) and was > helped by asking in this group. However, the solution has disappeared. > Maybe the 2.x solution is not the same as in 3.x?)
Keep it simple, use a function: def make(*args): class_ = deduce_correct_class(*args) return class_(*args) That way you won't even need any __new__() methods. -- http://mail.python.org/mailman/listinfo/python-list