类似于一个类,但也应该在一个类中工作。我不确定是否可行,并且不确定要搜索的关键字是否正确,如果已经有答案,请致歉。
例如,我的意思是这样 -
def location():
x = 5
y = 0
z = 0
return x,y,z
然后输入location()。x,你就得到了数字5.在我看来,使用location().x
代替location()[0]
要好得多。
编辑:我问这种方式而不是课,因为你可能想把它放在课堂里,比如objectInfo( object ).getLocation().x
答案 0 :(得分:5)
>>> from collections import namedtuple
>>>
>>> XYZ = namedtuple('XYZ', ['x', 'y', 'z'])
>>>
>>> def location():
... return XYZ(5, 0, 0)
...
>>> location().x
5
使用namedtuple
,您仍然可以使用索引[..]
:
>>> location()[0]
5
<强>更新强>
如果您使用Python 3.3+,您还可以使用types.SimpleNamespace
:
>>> from types import SimpleNamespace
>>> def location():
... return SimpleNamespace(x=5, y=0, z=0)
...
>>> location().x
5
否则,请使用以下课程(来自上述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__
答案 1 :(得分:1)
您可以使用"bunch":
>>> class Bunch(object):
... def __init__(self, **kwargs):
... self.__dict__.update(kwargs)
...
>>> def location():
... return Bunch(x=5, y=0, z=0)
...
>>> location().x
5
>>> location().y
0
>>>
答案 2 :(得分:0)
您可以将其作为矩阵
def(x,y,z): X = 1 Y = 7 Z = 10`` 返回A = [x,y,z]
然后你就可以用这种方式拿A [1]换x。 我理解我的意思,这是一种将变量放在一系列
中的方法