作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Python 命名空间下存储一堆变量而不创建单独的模块。我注意到 ArgumentParser
的结果的parse_args()
是 argparse.Namespace
目的。您可以通过点语法访问参数。
from argparse import ArgumentParser
parser = ArgumentParser()
# some arg definitions here...
args = parser.parse_args() # returns a `argparse.Namespace` object
argparse.Namespace
的等效项?我知道我可以用
dict
做类似的事情但我想使用点语法。是否有任何内置类可以让您分配任意属性?
最佳答案
从 python3.3 开始你可以使用 types.SimpleNamespace
.
然而,另一种选择很简单:
class Namespace(object):
pass
namespaceA = Namespace()
namespaceA.x = 1
SimpleNamespace
的完整代码不会再长了。
object
实例:
>>> o = object()
>>> o.x = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'x'
object
的实例没有
__dict__
属性:
>>> vars(object())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: vars() argument must have __dict__ attribute
object
实例的属性。 .
object
没有
__slots__
的子类属性集确实有
__dict__
它用于(默认情况下)存储/检索属性:
>>> class Namespace(object):
... pass
...
>>> a = Namespace()
>>> a.x = 1 # same as as.__dict__['a'] = 1
>>> a.__dict__
{'x': 1}
关于python - 如何在 Python 脚本中创建单独的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25896322/
我是一名优秀的程序员,十分优秀!