In Han Kang wrote: > So each of the sub classes plots a different type of graph. The > superclass defines methods that are the same for all the plots. I want > to be able to pick some points and be able to generate a more plots. > What I was wondering if I could define in a method in the superclass of > an object the ability to make a brand new subclass (new plot). So > basically, one plot makes another plot, but it'd be nice if i could put > all the code in the superclass.
Right, I agree with Steven, that you are probably wanting something like the factory pattern. Here's something modified from Steven's example more like what you are asking for: class Plot(object): #you need to subclass object to get __subclasses__ @staticmethod def getplot(name): return [plot for plot in Plot.__subclasses__() if plot.__name__ == name][0]() class LinePlot(Plot): pass class BarGraph(Plot): pass lp = Plot.getplot("LinePlot") bar = Plot.getplot("BarGraph") See also: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/86900 -- http://mail.python.org/mailman/listinfo/python-list