2014-10-09 22 views
-1

從另一個模塊導入結果變量時我嘗試打印的var1值我得到AttributeError: 'function' object has no attribute 'var1'我已經研究了好幾個小時和一些答案提及類的德創作,我想有可能是一個簡單的解決方案:在AttributeError的

這是主要的腳本

#script.py 
from module1 import function1 
from module2 import function2 

function1(arg) #It calls the function and works fine 

print function1.var1 #HERE IT BREAKS WITH THE AttributeError! 

function2(otherArgs) #I suppose this will also break... 

這是第一個模塊

#module1.py 
def function1(args1): 
    #some stuff 
    var1 = 'some' 

這裏第二個也呼籲var1

#module2.py 
import module1 
def function2(args2): 
    #some stuff 
    print module1.var1 
+2

如果函數內部定義了'var1',它將在該函數中是局部的。你試圖使用的語法是'OOP' – Beginner 2014-10-09 22:09:40

回答

1

函數就像黑匣子一樣,所以函數中的所有變量都只用於計算最終結果。一旦函數完成,它將返回您告訴它的任何結果,然後刪除所有本地變量。我想你正在嘗試做的應該看起來更像是這樣的:

#module1.py 
def function1(args1): 
    #some stuff 
    var1 = 'some' 
    return var1 

#script.py 
from module1 import function1 
from module2 import function2 

var1 = function1(arg) #It calls the function and works fine 

print var1 

function2(otherArgs) 

屬性,僅供班,功能保持什麼除了運行後,你告訴它返回,並且在執行過程中修改的任何全局變量的功能。