Python-将argparse变量传递到类中

Python-将argparse变量传递到类中,python,Python,使用Python2.6,我想将参数传递给类,但是我得到了以下错误 Traceback (most recent call last): File "./myscript.py", line 95, in <module> args = get_parser().parse_args() File "./myscript.py", line 22, in get_parser generate_mutex.set_defaults(func=ns_calls.generate_lbvs

使用Python2.6,我想将参数传递给类,但是我得到了以下错误

Traceback (most recent call last):
File "./myscript.py", line 95, in <module>
args = get_parser().parse_args()
File "./myscript.py", line 22, in get_parser
generate_mutex.set_defaults(func=ns_calls.generate_lbvs_bindings)
NameError: global name 'ns_calls' is not defined

init要求您传递args参数,但当您执行ns_calls=NetscalerCalls行时,您没有传递该参数,因此它会抱怨。在获得所需的args对象后,您必须先输入该行,然后执行ns_calls=NetscalerCalls args

初始化要求您输入args参数,但当执行ns_calls=NetscalerCalls行时,您没有传入该参数,因此它会抱怨。在获得所需的args对象后,您将不得不删除该行,然后执行ns_calls=NetscalerCalls args

您没有将args放在此处:

ns_calls = NetscalerCalls()
                          ^
根据您创建的类,这是无效的,其中uuu init_uuuu需要self,args

当您初始化该类时,它会自动传入。因此,在初始化类时需要传入args

例如:

如果在声明args之前尝试传入args,它将失败


这就是为什么我将ns_调用的变量声明放在args声明下面的原因

您没有将args放在这里:

ns_calls = NetscalerCalls()
                          ^
根据您创建的类,这是无效的,其中uuu init_uuuu需要self,args

当您初始化该类时,它会自动传入。因此,在初始化类时需要传入args

例如:

如果在声明args之前尝试传入args,它将失败


这就是为什么我把ns_调用的变量声明放在args声明下面的原因

Damnit,我做了,我用错了备份脚本。现在得到一个不同的错误。我认为我的问题是如果(if)name(u)==(u)main(u)(u)(u)main(u)(u)(u)I(u)name(==(u)u)u)。但是现在创建ns_调用的位置太早了,因为您要到本教程的后面才能定义argsscript@luckytaxi愚弄你的编辑你有循环依赖。实际上,NetscalerCalls依赖于get_解析器的结果,但是get_解析器依赖于NetscalerCalls的方法。您必须以某种方式拆分这些依赖项。两者不能互相依赖,否则你将永远无法拥有你能首先完成的部分。该死,我做到了,我用错了备份脚本。现在得到一个不同的错误。我认为我的问题是如果(if)name(u)==(u)main(u)(u)(u)main(u)(u)(u)I(u)name(==(u)u)u)。但是现在创建ns_调用的位置太早了,因为您要到本教程的后面才能定义argsscript@luckytaxi愚弄你的编辑你有循环依赖。实际上,NetscalerCalls依赖于get_解析器的结果,但是get_解析器依赖于NetscalerCalls的方法。您必须以某种方式拆分这些依赖项。两者不能互相依赖,否则你永远都不会有你能先做的那件事。啊,这是有道理的。所以现在我有一个不同的问题,它告诉我N_调用没有定义。请参阅最新更新。这在我的回答的最后一节中介绍。。。抱歉,我没有正确更新编辑。我确实把N_电话搬到了主楼。这里是Python新手。我是否需要将ns_调用传递到get_解析器中?您需要花一些时间学习作用域,以及如何在代码中处理函数、类和全局。get\u parser函数有一个对ns\u调用的引用,但是ns\u calls类需要args变量,您似乎首先通过调用get\u parser函数来声明这个变量。。。你知道这是怎么回事吗?是的。没问题。我要重做这个。谢谢,有道理。所以现在我有一个不同的问题,它告诉我N_调用没有定义。请参阅最新更新。这在我的回答的最后一节中介绍。。。抱歉,我没有正确更新编辑。我确实把N_电话搬到了主楼。这里是Python新手。我是否需要将ns_调用传递到get_解析器中?您需要花一些时间学习作用域,以及如何在代码中处理函数、类和全局。get\u parser函数有一个对ns\u调用的引用,但是ns\u calls类需要args变量,您似乎首先通过调用get\u parser函数来声明这个变量。。。你知道这是怎么回事吗?是的。没问题。我要重做这个。谢谢
ns_calls = NetscalerCalls()
                          ^
# myscript.py
from myclassfile import *

...
...

if __name__ == "__main__":
    args = get_parser().parse_args()
    args.func(args)
    ns_calls = NetscalerCalls(args)