我有一个使用python的optparse
模块在我的程序中处理命令行参数的类。它还由几个类继承以创建参数子集。为了封装选项解析机制,我想只显示一个函数add_option
来继承类。这个函数的作用是调用optparse.make_option
。
让我的add_option
方法在文档中接受与optparse.make_option
相同的参数,并将参数转发为*args
和{{1},这是一种很好的做法。 }?
我应该事先做一些参数检查吗?在某种程度上,我希望避免这种情况,将这段代码与特定版本的**kwargs
分开。
答案 0 :(得分:1)
您似乎希望您的子类能够了解命令行内容,这通常不是一个好主意。
您希望封装程序的整个配置输入部分,以便您可以使用命令行,配置文件,其他python程序驱动它。
所以,我会从你的子类中删除对add_option的任何调用。
如果您想在运行时发现配置要求的样子,我只需将这些数据添加到您的子类中;让每个人都有一个成员或方法,可以用来确定它需要什么样的输入。
然后,您可以让输入管理器类遍历它们,将这些数据拉出来,并使用它来驱动命令行,配置文件或您拥有的内容。
但老实说,我从来不需要在运行时这样做。我通常将所有配置文件都拉到它自己独立的东西上,它回答了“用户需要告诉工具的内容是什么?”,然后子类会在配置数据结构中查找它们需要的内容。
答案 1 :(得分:0)
您确定子类化是您想要做的吗?您的重写行为可以在函数中实现。