- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
以下方法似乎都适用。使用 types.SimpleNamespace
有什么好处(除了漂亮的 repr
)?还是一样的?
>>> import types
>>> class Cls():
... pass
...
>>> foo = types.SimpleNamespace() # or foo = Cls()
>>> foo.bar = 42
>>> foo.bar
42
>>> del foo.bar
>>> foo.bar
AttributeError: 'types.SimpleNamespace' object has no attribute 'bar'
最佳答案
这在 types 中有很好的解释。模块说明。它向您显示 types.SimpleNamespace
大致相当于:
class SimpleNamespace:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __repr__(self):
keys = sorted(self.__dict__)
items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys)
return "{}({})".format(type(self).__name__, ", ".join(items))
def __eq__(self, other):
return self.__dict__ == other.__dict__
与空类相比,这提供了以下优点:
sn = SimpleNamespace(a=1, b=2)
repr()
:eval(repr(sn)) == sn
id()
进行比较,而是比较属性值。关于python - SimpleNamespace 和空类定义有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161275/
这个问题在这里已经有了答案: Passing a dictionary to a function as keyword parameters (4 个答案) 关闭 4 年前。 我确定这一定很简单,
以下方法似乎都适用。使用 types.SimpleNamespace 有什么好处(除了漂亮的 repr)?还是一样的? >>> import types >>> class Cls(): ...
已问:How to initialize a SimpleNamespace from a dict? 我的问题是相反的方向。如何从 SimpleNamespace 初始化字典? 最佳答案 from
考虑以下几点: In [1]: import types In [2]: class A: ...: pass ...: In [3]: a1 = A() In [4]: a1
做的时候: import types ns = types.SimpleNamespace(alfa = 1, bravo = 2, charlie = 3) print(dir(ns)) 结果列表也
我有一个 SimpleNamespace 对象的列表 P。 P 的第三个元素可能如下所示: namespace(idx=2, values=[(0, 6), (4, 25), (7, 40), (11
Python 3.7 提供了新的 dataclasses,它们具有预定义的特殊功能。 从总体上看,dataclasses 和 SimpleNamespace 都提供了很好的数据封装工具。 @datac
看起来它们的行为完全相同 - 都像 dicts 但使用 . 文字来访问一个项目,然而它们甚至都不是另一个的子类 from argparse import Namespace from types im
我期望能够做类似的事情: a = SimpleNamespace(x='test') b = a.copy() 或者也许: b = SimpleNamespace(a) 我目前的解决方案似乎工作正常
考虑这段 Python(3.5 版)代码: import pickle from types import SimpleNamespace class MyClass1(list): def
我是一名优秀的程序员,十分优秀!