Python - 将 argparse 变量传递给类

标签 python

使用 Python 2.6,我想将 args 传递给类,但出现以下错误。

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

主要脚本:

# myscript.py
from myclassfile import *

def get_parser():
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest="subparser_name")

    generate = subparsers.add_parser('generate')
    generate_mutex = generate.add_mutually_exclusive_group(required=True)
    generate_mutex.add_argument('-g', '--servicegroupname', help='The servicegroup name.',metavar='<servicegroup name>')
    generate_mutex.add_argument('-l', '--lbvservername', help='The virtual erver name to which the service is bound.',metavar='<lbvserver name>')
    generate_mutex.set_defaults(func=ns_calls.generate_lbvs_bindings)

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

我的模块文件:

# myclassfile.py

class NetscalerCalls(object):
    def __init__(self, args):
        self.lbvservername = args.lbvservername
        self.servername = args.servername

最佳答案

你没有把参数放在这里:

ns_calls = NetscalerCalls()
                          ^

根据您创建的类,这是无效的,其中 __init__ 需要 (self, args)

当您启动该类时,它会自动传入self。所以你需要在启动类时传入args。

例如:

# myscript.py
from myclassfile import *

...
...

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

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

这就是为什么我将 ns_calls 的变量声明放在 args 的声明下面

关于Python - 将 argparse 变量传递给类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774393/

相关文章:

Python:如何从键值字典列表构造元组值字典?

python - 如何使用 Python 和 Scripting Bridge 将轨道添加到 iTunes 播放列表

python - 如何在 Python 中获取 numpy 数组周边的值?

python - 数组作为numba中的函数参数

python - 在 Python 列表中按值对字典中的键进行排序

python - 使用 Python/PIL 读取 SVG 文件

python - 如何按列对多维数组进行排序?

python - NDB 中 SelfReferenceProperty 的等价物

python - 如何设置 CEF 窗口图标(在 python 中)

python - 在 Python3 中获取 OrderedDict 的最后一个值