>>> class test():
... def add(self):
... a = 3+5
... b = 4+9
... return a,b
...
>>> x = test()
>>> x.add()
(8, 13)
>>> z = x.add()
>>> z[0]
8
>>> z[1]
13
我正在寻找使用变量名称a
或b
来读取z[0]
和z[1]
的单个变量的方法。
我也试图避免使用全局变量。
答案 0 :(得分:6)
只需像这样分配
a, b = x.add()
现在,a
将有8个,b
将有13个
答案 1 :(得分:2)
您可以使用collections.namedtuple()
:
from collections import namedtuple
Values = namedtuple("Values", ["a", "b"])
class Test():
def add(self):
a = 3 + 5
b = 4 + 9
return Values(a=a, b=b)
test = Test()
x = test.add()
print x.a
print x.b
<强>输出:强>
8
13
您也可以返回dict
。 e.g:
def add():
a = 3 + 5
b = 4 + 9
return {"a": a, "b": b}
然后您可以通过Python 语法糖 [key]
访问,例如:
x["a"]
x["b"]
或者您只需解压缩返回未命名的元组,就像这样:
a, b = test.add()
答案 2 :(得分:1)
元组可以解压缩并存储在变量
中例如。
x,y,z = 2,3,4
def getMyTuple():
return a,b,c,d
w,x,y,z = getMyTuple()
答案 3 :(得分:1)
你也可以使用这种萨满教:
class wrap:
def __init__(self, **data):
self.__dict__.update(data)
def named(m):
def f(self):
a,b = m(self)
return wrap(**{'a': a, 'b': b})
return f
class test:
@named
def add(self):
a = 3+5
b = 4+9
return a,b
它用dictonary(因此,命名值)装饰你的方法并将它们转移到对象的属性,即它将起作用:
t = test()
x = t.add()
print x.a, x.b