<p>使用<a href="https://docs.python.org/2/library/collections.html#collections.namedtuple" rel="nofollow">^{<cd1>}</a>:</p>
<pre><code>>>> from collections import namedtuple
>>>
>>> XYZ = namedtuple('XYZ', ['x', 'y', 'z'])
>>>
>>> def location():
... return XYZ(5, 0, 0)
...
>>> location().x
5
</code></pre>
<p>使用<code>namedtuple</code>,仍然可以使用索引<code>[..]</code>访问值:</p>
<pre><code>>>> location()[0]
5
</code></pre>
<hr/>
<p><strong>更新</p>
<p>如果使用Python 3.3+,还可以使用<a href="https://docs.python.org/3/library/types.html#types.SimpleNamespace" rel="nofollow">^{<cd4>}</a>:</p>
<pre><code>>>> from types import SimpleNamespace
>>> def location():
... return SimpleNamespace(x=5, y=0, z=0)
...
>>> location().x
5
</code></pre>
<p>否则,使用以下类(来自上面的<code>SimpleNamespace</code>链接):</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>