首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,如何使主要args成为全局的

在python中,如何使主要args成为全局的
EN

Stack Overflow用户
提问于 2019-11-15 08:04:23
回答 3查看 3.8K关注 0票数 6

我想在python中访问类函数中的args值。

例如,我在下面编写了一个示例测试程序。

代码语言:javascript
复制
#!/usr/bin/env python

import argparse

class Weather(object):
    def __init__(self):
        self.value = 0.0
    def run(self):
        print('in weather.run')
        if (args.sunny == True):
            print('It\'s Sunny')
        else:
            print('It\'s Not Sunny')

def main():
    argparser = argparse.ArgumentParser(
        description=__doc__)
    argparser.add_argument(
        '--sunny', action='store_true', dest='sunny', help='set if you want sunny weather')
    args = argparser.parse_args()

    print('args.sunny = ', args.sunny)

    weather = Weather()


    weather.run()

if __name__ == '__main__':
    main()

当我运行它(./test.py)时,我会看到下面的错误。

代码语言:javascript
复制
('args.sunny = ', False)
in weather.run
Traceback (most recent call last):
  File "./test.py", line 30, in <module>
    main()
  File "./test.py", line 27, in main
    weather.run()
  File "./test.py", line 10, in run
    if (args.sunny == True):
NameError: global name 'args' is not defined

我尝试在Weather.run函数中添加“全局args”,但是得到了相同的错误。正确的方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-15 08:09:30

您可以通过以下方式将其设置为全局的:

代码语言:javascript
复制
global args
args = argparser.parse_args()

或者只是把阳光当作天气的论据:

代码语言:javascript
复制
def run(self, sunny):
.....

weather.run(self, args.sunny)
票数 5
EN

Stack Overflow用户

发布于 2019-11-15 08:08:42

为什么不将main()中的任何内容添加到if语句中?

代码语言:javascript
复制
#!/usr/bin/env python

import argparse

class Weather(object):
    def __init__(self):
        self.value = 0.0
    def run(self):
        print('in weather.run')
        if (args.sunny == True):
            print('It\'s Sunny')
        else:
            print('It\'s Not Sunny')

if __name__ == '__main__':
    argparser = argparse.ArgumentParser(
        description=__doc__)
    argparser.add_argument(
        '--sunny', action='store_true', dest='sunny', help='set if you want sunny weather')
    args = argparser.parse_args()

    print('args.sunny = ', args.sunny)

    weather = Weather()


    weather.run()
票数 2
EN

Stack Overflow用户

发布于 2020-06-30 21:53:27

所提供的两个答案与我的应用程序的设计不匹配,不过这对我来说很管用:

代码语言:javascript
复制
class Weather(object):
    def run(self):
        if (args.sunny == True):
            print('It\'s Sunny')
        else:
            print('It\'s Not Sunny')

def main():
    global args
    args = argparser.parse_args()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58872671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档