为了交互式地测试我的Python脚本,我想创建一个类似于
可能会导致Python repl在一个愚蠢的错误上退出(如上所述)。
那么,创建一个具有给定属性集的Python命名空间最简单的方法是什么?
例如,我可以动态创建一个字典(dict([("a",1),("b","c")])),但我不能将其用作命名空间(Namespace)。
PS. 新的
argparse.parse_args()
返回的Namespace
对象。
显而易见的方法是,>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.parse_args()
Namespace()
>>> parser.parse_args("-a")
usage: [-h]
: error: unrecognized arguments: - a
Process Python exited abnormally with code 2
可能会导致Python repl在一个愚蠢的错误上退出(如上所述)。
那么,创建一个具有给定属性集的Python命名空间最简单的方法是什么?
例如,我可以动态创建一个字典(dict([("a",1),("b","c")])),但我不能将其用作命名空间(Namespace)。
AttributeError: 'dict' object has no attribute 'a'
PS. 新的
exit_on_error
选项看起来是一个有希望的替代方案,可以避免创建Namespace
对象,但显然它被设计得严重破损。
SimpleNamespace
实际上并没有被argparse
使用;argparse.Namespace
是该库独有的纯Python类,而types.SimpleNamespace
是最初为sys.implementation
开发的类,后来也用于time.get_clock_info()
。它是用C实现的。 - Martijn Pietersargparse.Namespace
一样实现'attrname' in instance
,可以在上面的类定义中添加__contains__
方法:def __contains__(self, item): return item in self.__dict__
- alleen1