-On [20090430 02:21], Dale Amon (a...@vnl.com) wrote: >import sys >sys.path.extend (['../lib', '../bin']) > >from VLMLegacy.CardReader import CardReader >rdr = CardReader ("../example/B767.dat","PRINTABLE") > >iotypes = ["WINGTL","VLMPC","VLM4997"] >for iotype in iotypes: > packagename = "VLMLegacy." + iotype + ".Conditions" > classname = iotype + "_Conditions" > code = "from %s import Conditions as %s" \ > % (packagename, classname) > x = compile (code,"foo","exec") > exec x > cls = globals()[classname] > a = cls(rdr,2) > a.test() >
Although I can applaud your creativity, this really is very hackish for Python and definitely has a bad 'smell'. Like you I work with many different languages, but I am not going to force the natural flow of Python into something resembling Java or whatever other language. Simply doing: Right now your code boils down to: from VLMLegacy.VLM4997.Conditions import Conditions as VLM4997_Conditions from VLMLegacy.VLMPC.Conditions import Conditions as VLMPC_Conditions from VLMLegacy.WINGTL.Conditions import Conditions as WINGTL_Conditions And while you are, of course, allowed to do so, it's not the way you would want to approach it in Python. For each subpackage/module you could add an import and __all__ to __init__.py to expose Conditions and then shorten it all to: import VLMLegacy.VLM4997 as VLM4997 import VLMLegacy.VLMPC as VLMPC import VLMLegacy.WINGTL as WINGTL So that you can do: a = VLM4997.Conditions(rdr, 2) a.test() -- Jeroen Ruigrok van der Werven <asmodai(-at-)in-nomine.org> / asmodai イェルーン ラウフロック ヴァン デル ウェルヴェン http://www.in-nomine.org/ | http://www.rangaku.org/ | GPG: 2EAC625B May you get - not what you deserve - but your heart's desire... -- http://mail.python.org/mailman/listinfo/python-list