我有一个返回两个值的函数:
def dbfunc:
# ...
return var1, var2
我有这堂课:
class MyClass:
foo = ...
bar = ...
我想将dbfunc()的结果分配给我正在尝试创建的MyClass实例。 我试过这个:
my_object = MyClass(dbfunc()) # does not work because the return type is a tuple
我可以这样做:
res = dbfunc()
my_object = MyClass(foo=res[0], bar=res[1])
但我实际上是在一个综合列表的中间尝试这样做,所以我不能做出这种“预先做作”。我必须在一次这样做。
感谢您的帮助。
答案 0 :(得分:3)
my_object = MyClass(*dbfunc())
在函数的最后一个参数之前加上*
,Python将迭代该参数并将元素作为单独的位置参数传递给函数。您可以将**
与dict一起用于关键字参数。
此外,您可能会遇到有关类与实例属性的错误。请参阅“How do I avoid having Python class data shared among instances?”。它可能会或可能不会很好,具体取决于您剥离的MyClass
部分。
答案 1 :(得分:0)
您可以更简单地定义您的功能和您的课程,如下所示。
def dbfunc:
# ...
return var1, var2
class MyClass:
def __init__(foo, bar):
self.foo = name
self.bar = bar
[var1, var2] = dbfunc()
my_object = MyClass(var1, var2)