Donald Westfield wrote: > I have my own module, called mystuff.py, which is to be imported for an > app. > > The number of classes in the module will vary, so I need a subroutine that > will instantiate all of them as objects, and assign a variable to each, > regardless of what names the classes are.
Perhaps if you could explain what you mean by "instantiate all of them as objects" .... suppose there are two classes, named Foo and Bar, in the module; do you want to class objects (Foo and Bar), or do you want one instance of each class (Foo() and Bar())? Then what do you mean "assign a variable to each"? Do you mean "bind a name to each"? Perhaps it would help if you explained what this magic function should return, or what effect it should have on the environment, and gave examples of what you'd write after invoking the magic, like magic_class_gadget(mystuff) obj1 = class1() obj2 = class2() obj3 = .... obj1.some_method() .... The big problem is that you don't know until you import the module how many classes there are in it .... Maybe you need something like this: class_list = magic_class_gadget(mystuff) obj_list = [cls() for cls in class_list] # Note: assumption is that each class's __init__ method has the same signature. for obj in obj_list: obj.some_method() ... del obj_list del class_list del mystuff In that case you can get the class_list by doing this: import types class_list = [v for v in mystuff.__dict__.values() if isinstance(v, types.TypeType)] Alternatively, forget about the implementation details for the moment -- come up a level and tell us what you are trying to achieve, what are the similarites/differences between the classes, why/how does the number vary, ... > Then I need to be able to delete these objects from memory completely at > times. (a) Why? (b) The del statement is your friend. > > Can someone recommend a subroutine for this? It is highly unlikely that there is an existing function to do this. HTH, John -- http://mail.python.org/mailman/listinfo/python-list