<p>从Python 3.3及以后的版本中,您可以使用<a href="https://docs.python.org/3/library/types.html#types.SimpleNamespace" rel="nofollow noreferrer">types.SimpleNamespace</a>:</p>
<pre><code>>>> import types
>>> foo = types.SimpleNamespace(bar='one', baz=1)
>>> print(foo.bar)
one
>>> foo.baz += 1
>>> foo.novo = 42
</code></pre>
<p>内置类型大致相当于以下代码:</p>
<pre><code>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__
</code></pre>
<p><strong>更新</strong></p>
<p>从Python3.7开始,您可以使用<em>数据类</em>模块:</p>
<pre><code>from dataclasses import dataclass, field
@dataclass
class Struct:
bar: str = field(default='one')
baz: int = field(default=1)
</code></pre>
<p>您可以如下使用:</p>
<pre><code>foo = Struct( bar='one', baz=1 )
print(foo.bar)
foo.baz += 1
foo.novo = 42
</code></pre>
<p>默认情况下,它包含相等测试和一个漂亮的报表:</p>
<pre><code>>>> foo == Struct(bar='one', baz=2)
True
>>> foo
Struct(bar='one', baz=2)
</code></pre>