Ответ 1
Когда вы запускаете исходный файл python напрямую, имя модуля этого файла __main__
, даже если оно известно другим именем, когда вы выполняете какой-либо другой файл и импортируете его.
Возможно, вы захотите сделать так, как вы делали в modtest2, и импортировать модуль, содержащий определение класса, вместо непосредственного выполнения этого файла. Тем не менее, вы можете получить имя основного модуля, как это, для ваших диагностических целей:
def print_method_module(method):
def printer(self):
name = self.__module__
if name == '__main__':
filename = sys.modules[self.__module__].__file__
name = os.path.splitext(os.path.basename(filename))[0]
print name
return method(self)
return printer