Create object from variable indirect reference?
NickC
reply-to at works.fine.invalid
Tue Nov 10 09:59:25 EST 2009
I can't seem to find a way to do something that seems straighforward, so I
must have a mental block. I want to reference an object indirectly
through a variable's value.
Using a library that returns all sorts of information about "something", I
want to provide the name of the "something" via a variable (command line
argument). The something is a class in the library and I want to
instantiate an object of the class so I can start querying it. I can't
figure out how to pass the name of the class to the library.
Or, put another way, I can't figure out how to indirectly reference the
value of the command line argument to create the object.
To make it clearer, it's roughly equivalent to this in bash:
Sun="1AU" ; body=Sun; echo ${!body} --> outputs "1AU".
command line:
$ ./ephemeris.py Moon
code:
import ephem
import optparse
# various option parsing (left out for brevity),
# so variable options.body contains string "Moon",
# or even "Moon()" if that would make it easier.
# Want to instantiate an object of class Moon.
# Direct way:
moon1 = ephem.Moon()
# Indirect way from command line with a quasi bashism that obviously fails:
moon2 = ephem.${!options.body}()
Can someone point me in the right direction here?
(The library is PyEphem, an extraordinarily useful library for anyone
interested in astronomy.)
Many thanks,
--
NickC
More information about the Python-list
mailing list