Introspection at the module level?
Peter Hansen
peter at engcorp.com
Sat Mar 6 11:53:27 EST 2004
Roy Smith wrote:
> I've got a module that defines a bunch of constants:
>
> OP_FOO = 1
> OP_BAR = 2
> OP_BAZ = 37
>
> and so on. The values are all unique. I want to build, at module
> import time, a reverse map of these constants, i.e. I want to end up
> with:
>
> {1: "OP_FOO", 2: "OP_BAR", 37: "OP_BAZ"}
>
> I can find the appropriate symbols:
>
> for name in dir():
> if name.startswith ("OP_"):
> print name
>
> But I don't see how to get the values. Getattr() is sort of what I
> want, but it works on objects, not modules. Not to mention that I don't
> see how to get a handle to the module from inside the module, i.e.
> there's no "self".
>
> What am I missing?
globals()
That returns a dict which has those constants in it, so you can ask for
.keys() or .values(), etc.
Think of dir() as just globals().keys() in this case...
-Peter
More information about the Python-list
mailing list