2011-09-23 29 views
1

我怎樣才能在主要AttributeError的:「功能」對象有沒有屬性「my_args」

 
# test1.py 

#!/usr/bin/env python 

def main(): 
    print 'main function' 
    one() 

def one(): 
    print 'one function' 
    my_args = ["QA-65"] 

def two(): 
    print 'two function' 

if __name__ == "__main__": 
    main() 
    getattr(my_args, pop) 

+0

你從來沒有使用該名稱定義的全局變量。這不是你如何訪問方法 – JBernardo

回答

3

你可以,如果你return他們one()

#!/usr/bin/env python 

def main(): 
    print 'main function' 
    args = one() # returns my_args, which i'm assigning to args 
    print 'i got args from one():', args 
    print args.pop() 

def one(): 
    print 'one function' 
    my_args = ["QA-65"] 
    return my_args 

def two(): 
    print 'two function' 

if __name__ == "__main__": 
    main() 
    #getattr(my_args, pop) 
    # ^^^ Moved this up to main() ^^^ 

輸出:

main function 
one function 
i got args from one(): ['QA-65'] 
QA-65 
+0

+1:比我自己的答案好得多。 – Johnsyweb

+0

哈哈,謝謝。我不惜一切代價避免使用'global'作爲交換,以便根據需要顯式返回值。即使'main()'返回最終的預期輸出也是一個好主意! :) – jathanism

0

可以訪問my_args,列表數據類型做到這一點使用global

#!/usr/bin/env python 

def main(): 
    print 'main function' 
    one() 

def one(): 
    print 'one function' 
    global my_args 
    my_args = ["QA-65"] 

def two(): 
    print 'two function' 

if __name__ == "__main__": 
    main() 
    print my_args.pop() 

Demo

僅僅因爲你可以並不意味着你應該!

相關問題