【问题标题】:AttributeError: 'function' object has no attribute 'my_args'AttributeError:“函数”对象没有属性“my_args”
【发布时间】:2011-09-23 03:06:49
【问题描述】:

如何访问__main__ 中的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)

【问题讨论】:

  • 您从未使用该名称定义过全局变量。这不是您访问方法的方式

标签: python python-2.x


【解决方案1】:

如果你从one()return 他们可以:

#!/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

【讨论】:

  • 哈哈,谢谢。我不惜一切代价避免使用global,以根据需要显式返回值。即使让main() 返回最终的预期输出也是一个好主意! :)
【解决方案2】:

您可以使用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.

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

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 2019-05-10
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2017-03-05
    • 1970-01-01
    相关资源
    最近更新 更多