[EMAIL PROTECTED] wrote: (snip) > brings me onto another question that has been bugging me, which is, if > I want to create components (as object instances) at run time (rather > than through a python code imported in), how do I do this? i.e. if I > hardcoded something like > turbine1 = turbine(...) > then python knows that turbine1 is a turbine. but if I had say some > kind of user interface and I want to create turbine1 (or suchlike) on > the fly, how do I actually do that? how do I create objects after run > time?
Q&D possible solution, no error handling, etc ...just so you get an idea # schema generated by a GUI # or directly written in a .py config file # or whatever schema = {'turbine1': {'class': 'Turbine', 'upstream' : ('frobnicator2',), 'downstream' : () # nothing, }, 'frobnicator2' : {'class' : 'Frobnicator', 'upstream' : (), 'downstream' : ('frobnicator2',), }, } # code: def get_class_by_name(name): return globals()[name] def chain_from_schema(schema): objects = {} for name, desc in schema: klass = get_class_by_name(desc['class']) objects[name] = klass() for name, desc in schema: target = objects[name] ups = [objects[upname] for upname in desc['upstream']] downs = [objects[downname] for downname in desc['downstream']] target.links(upstream=ups, downstream=downs) return objects -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list