Entry
Getting the module name from a method
Jul 5th, 2000 10:00
Nathan Wallace, Hans Nowak, Snippet 136, Michael P. Reilly
"""
Packages: modules_and_packages
"""
"""
: I would like a method of my own to be able to print the module it is
: declared in:
: ex:
: the text for the module : toto.py is :
: class MyClass:
: def myMethod(self):
: print "I am in module", ????????
: and then
: MyClass().myMethod()
: should produce :
: 'toto'
Unless the method was added as an instance attribute (self.method =
...),
the global namespace should be the module where the method was defined,
in this case "toto". The less secure means would be
globals()['__name__'], but you could also go with:
"""
import os, sys
def mymodule():
try:
raise RuntimeError
except RuntimeError:
exc, val, tb = sys.exc_info()
code = tb.tb_frame.f_back.f_code
del exc, val, tb
if code.co_filename:
module = os.path.splitext(os.path.basename(code.co_filename))[0]
else:
module = '<string>'
return module