2011-09-23 54 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

仅仅因为你可以并不意味着你应该!

相关问题