我想访问python中类函数中的args值
例如,我在下面编写了一个示例测试程序。
#!/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(时,我会收到下面的错误。
('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函数中放入"global args",但也出现了同样的错误。正确的方法是什么?
您可以通过以下方式将其设置为全局:
global args
args = argparser.parse_args()
或者只是把晴天当作天气的论据:
def run(self, sunny):
.....
weather.run(self, args.sunny)
为什么不将main((中的任何内容添加到if语句中?
#!/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()
提供的两个答案与我的应用程序设计不匹配,但这对我有效:
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()