有点类似于类,但也应该在类中工作.我不确定是否可能,并且不确定要搜索的正确关键字,所以如果已经有答案就道歉.
例如,我的意思是这样的 -
def location():
x = 5
y = 0
z = 0
return x,y,z
Run Code Online (Sandbox Code Playgroud)
然后输入location().x,你就得到了数字5.使用location().x而不是location()[0]在我看来它会更好.
编辑:我要求的是这种方式而不是类,因为你可能想把它放在一个类中,比如 objectInfo( object ).getLocation().x
>>> from collections import namedtuple
>>>
>>> XYZ = namedtuple('XYZ', ['x', 'y', 'z'])
>>>
>>> def location():
... return XYZ(5, 0, 0)
...
>>> location().x
5
Run Code Online (Sandbox Code Playgroud)
使用namedtuple,您仍然可以使用索引访问值[..]:
>>> location()[0]
5
Run Code Online (Sandbox Code Playgroud)
UPDATE
如果您使用Python 3.3+,您还可以使用types.SimpleNamespace:
>>> from types import SimpleNamespace
>>> def location():
... return SimpleNamespace(x=5, y=0, z=0)
...
>>> location().x
5
Run Code Online (Sandbox Code Playgroud)
否则,请使用以下类(来自上面的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__
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |