1

根据Python 文档,您必须在创建 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)

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

4

2 回答 2

1

OptionGroup派生自OptionContainer(so does OptionParser),它提供 (以及其他方法)add_option_check_conflict. 该parser参数用于为其父__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__只是这样当你向它添加选项时,选项组的行为方式与解析器相同。

于 2012-04-09T19:23:02.540 回答
0

因为 OptParse 开发者没有添加

parser.add_option_group(self)

在 OptionGroup 类构造函数中。

:P

于 2012-04-09T19:19:27.320 回答