В python 2.5 у меня есть следующий код в модуле modtest.py:
def print_method_module(method):
def printer(self):
print self.__module__
return method(self)
return printer
class ModTest():
@print_method_module
def testmethod(self):
pass
if __name__ == "__main__":
ModTest().testmethod()
Однако, когда я запускаю это, он печатает:
__main__
Если я создам второй файл с именем modtest2.py и запустим его:
import modtest
if __name__ == "__main__":
modtest.ModTest().testmethod()
Это выдает:
modtest
Как изменить декоратор, чтобы всегда печатать modtest
, имя модуля, в котором определен класс?