> > What is the simplest way to instantiate all classes that are > > subclasses of a given class in a module? > > > > More precisely I have a module m with some content: > > > > # m.py > > class A: > > pass > > class x( A ): > > pass > > class y( A ): > > pass > > # all kinds of other objects follow > > # end of m.py > > > > and then in another module I have currently: > > > > # n.py > > import m > > x = m.x( ) > > y = m.y( ) > > # end of n.py > > > > and would like to automate this in a way that results in having > > instances of classes from m in n whose names are the same as the > > classes themselves. But I only would like to do this with classes that > > are subclasses of A. > > > > Any ideas? > > It's pretty easy > > > import m > from inspect import getmembers, isclass, getmro > > t = '%s = m.%s()' > > for name, class_ in getmembers(m, isclass): > if class_ is m.A: > continue > if m.A in getmro(class_): > exec t % (name, name) >
Actually, this variant also suffers from the broken isclass implementation. (Simon, sorry for the double post.) -- http://mail.python.org/mailman/listinfo/python-list