instantiate all subclasses of a class
Marc 'BlackJack' Rintsch
bj_666 at gmx.net
Sun Jul 16 09:40:11 EDT 2006
In <mailman.8226.1153050094.27775.python-list at python.org>, Daniel Nogradi
wrote:
> 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?
Just go through the objects in the module, test if they are classes,
subclasses of `A` and not `A` itself:
from inspect import isclass
import test
instances = dict()
for name in dir(test):
obj = getattr(test, name)
if isclass(obj) and issubclass(obj, test.A) and obj is not test.A:
instances[name] = obj()
More information about the Python-list
mailing list