栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

argparse-组合父解析器,子解析器和默认值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

argparse-组合父解析器,子解析器和默认值

set_defaults
循环遍历解析器的操作,并设置每个
default
属性:

   def set_defaults(self, **kwargs):        ...        for action in self._actions: if action.dest in kwargs:     action.default = kwargs[action.dest]

你的

-n
论点(一个
action
对象)时,你所定义的创建
base_parser
。使用创建每个子解析器时
parents
,该操作将添加到
._actions
每个子解析器的列表中。它没有定义新的动作;它只是复制指针。

因此,当您

set_defaults
在上使用时
subparser2
,您
default
可以为此共享操作修改。

此操作可能是

subparser1._action
列表中的第二项(
h
是第一项)。

 subparser1._actions[1].dest  # 'n' subparser1._actions[1] is subparser2._actions[1]  # true

如果第二条语句为

True
,则表示
action
两个列表中的相同。

如果您

-n
为每个子解析器分别定义,则不会看到此信息。它们将具有不同的动作对象。

我是根据我对代码的了解而工作的,而不是文档中的任何内容。最近在Cause
Python的argparse中指出了默认执行操作的内容是,该文档对

add_argument
返回
Action
对象一无所知。这些对象是代码组织的重要组成部分,但是在文档中却没有得到太多关注。


如果使用“解决”冲突处理程序,则通过引用复制父操作也会产生问题,并且需要重用父操作。
和Python错误问题:

http://bugs.python.org/issue22401

针对此问题的一种可能解决方案是(可选)复制操作而不是共享引用。这样

option_strings
defaults
可以在子级中修改and
,而不会影响父级。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号