2016-10-01 2 views
-2

__name__ является специальным атрибутом в python и имеет значение имени модуля.Как использовать атрибут __name__ для получения соответствующих выходов?

Значения __name__ файла try2.py, try1.py, try3.py - это «try2», «try1» и «try3» соответственно.

Что нужно заменить в случае условия в try2.py для получения соответствующих выходов в файлах try1.py и try3.py соответственно?

файл: try2.py

class A(object): 
    a=[]  
def add(self,p,q): 
    return p+q 
def minus(self,p,q): 
    return p-q 

#I know that if i replace 'try1' by 'try2' in if condition, 
#then this can be executed where try2.py will be imported 
if(__name__=='try1'): 
    print('runs only if module name is try1') 
elif(__name__=='try3'): 
    print('runs only if module name is try3') 

файл: try1.py

import try2 

print(try2.A().add(2,3)) 

файл: try3.py

import try2 
print(try2.A().minus(2,3)) 
+1

... Что? '__name__' в try2.py будет« try2 », если вы импортируете его. –

+0

Да, я хочу напечатать разные строки в файлах try1.py и try3.py, соответственно –

+1

@VibhorVerma, ваш комментарий не помогает прояснить что-либо. Также где try3? –

ответ

3

Там только две вещи, которые когда-либо __name__ может быть.

Если вы запустите модуль напрямую, его __name__ будет "__main__".

В противном случае вы должны были его импортировать; его __name__ будет именем модуля. Невозможно, чтобы имя try2 всегда было «try1» или «try3».

+0

что можно заменить этот выше код, чтобы получить желаемый результат? –

+0

Я знаю это, что вы говорите –

+0

Ну, технически, если вы связаны с трюком 'try2.py' как' try3.py' ... Нет, это не разумный счетчик вашего общего мнения, и любой, кто это делает что-то вроде этого нужно расстрелять, но все же. :-) – ShadowRanger

Смежные вопросы