为什么在创建OptionGroup时必须提供两次解析器?

时间:2012-04-09 18:58:08

标签: python optparse

根据Python documentation,您必须在创建OptionGroup时提供解析器:

group = OptionGroup(parser, "Dangerous Options",
                    "Caution: use these options at your own risk.  "
                    "It is believed that some of them bite.")

然后在您创建OptionGroup

之后明确添加它
parser.add_option_group(group)

我目前无法访问源代码,但稍后会访问。也许其他人都知道。

2 个答案:

答案 0 :(得分:1)

OptionGroup派生自OptionContainerOptionParser也是如此),它提供(以及其他方法)add_option_check_conflictparser参数用于为其父__init__方法提供一些参数:

class OptionGroup (OptionContainer):

    def __init__(self, parser, title, description=None):
        self.parser = parser 
        OptionContainer.__init__(
            self, parser.option_class, parser.conflict_handler, description)
        self.title = title
出于类似目的,

self.parser在另一个地方使用。因此,我认为您将parser传递给__init__,以便选项组在向其添加选项时的行为方式与解析器相同。

答案 1 :(得分:0)

因为OptParse开发人员没有添加

parser.add_option_group(self)

在OptionGroup类构造函数中。

:P