我应该将参数转发为* args& ** kwargs?

时间:2009-08-25 13:23:06

标签: python optparse

我有一个使用python的optparse模块在​​我的程序中处理命令行参数的类。它还由几个类继承以创建参数子集。为了封装选项解析机制,我想只显示一个函数add_option来继承类。这个函数的作用是调用optparse.make_option

让我的add_option方法在文档中接受与optparse.make_option相同的参数,并将参数转发为*args和{{1},这是一种很好的做法。 }?

我应该事先做一些参数检查吗?在某种程度上,我希望避免这种情况,将这段代码与特定版本的**kwargs分开。

2 个答案:

答案 0 :(得分:1)

您似乎希望您的子类能够了解命令行内容,这通常不是一个好主意。

您希望封装程序的整个配置输入部分,以便您可以使用命令行,配置文件,其他python程序驱动它。

所以,我会从你的子类中删除对add_option的任何调用。

如果您想在运行时发现配置要求的样子,我只需将这些数据添加到您的子类中;让每个人都有一个成员或方法,可以用来确定它需要什么样的输入。

然后,您可以让输入管理器类遍历它们,将这些数据拉出来,并使用它来驱动命令行,配置文件或您拥有的内容。

但老实说,我从来不需要在运行时这样做。我通常将所有配置文件都拉到它自己独立的东西上,它回答了“用户需要告诉工具的内容是什么?”,然后子类会在配置数据结构中查找它们需要的内容。

答案 1 :(得分:0)

您确定子类化是您想要做的吗?您的重写行为可以在函数中实现。