В 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
, имя модуля, в котором определен класс?