Is there a way to get __thismodule__?
benhoyt
benhoyt at gmail.com
Tue Mar 18 23:47:02 EDT 2008
Is there a way to get __thismodule__ in Python? That is, the current
module you're in. Or isn't that known until the end of the module?
For instance, if I'm writing a module of message types/classes, like
so:
class SetupMessage(Message):
number = 1
class ResetMessage(Message):
number = 2
class OtherMessage(Message):
number = 255
nmap = { # maps message numbers to message classes
1: SetupMessage,
2: ResetMessage,
255: OtherMessage,
}
Or something similar. But adding each message class manually to the
dict at the end feels like repeating myself, and is error-prone. It'd
be nice if I could just create the dict automatically, something like
so:
nmap = {}
for name in dir(__thismodule__):
attr = getattr(__thismodule__, name)
if isinstance(attr, Message):
nmap[attr.number] = attr
Or something similar. Any ideas?
(A friend suggested class decorators, which is a good idea, except
that they're not here until Python 2.6 or Python 3000.)
Cheers,
Ben.
More information about the Python-list
mailing list