2016-10-01 46 views
-2

__name__是python中的特殊屬性,並具有模塊名稱的值。如何使用__name__屬性來獲得相應的輸出?

try2.py,try1.py,try3.py的__name__的值分別是'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

...什麼?如果導入它,try2.py中的'__name__'將會是「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