我有一个具有两个属性的类和一个返回两个属性的函数。 当我想初始化新对象时,为什么我不能将此函数作为构造函数参数传递。
我找到了解决方案,但我想知道为什么第一个选项不起作用。 谢谢!
class Box:
color = None
size = None
def __init__(self, color, size):
self.color = color
self.size = size
def box_properties(self):
print(self.color,self.size)
def default_box():
first="Blue"
second="Medium"
return first, second
# THIS WORKS :
first, second = default_box()
my_box = Box(first, second)
my_box.box_properties()
# THIS DOESN'T WORK :
my_box = Box(default_box())
my_box.box_properties()
第一个打印出来:如我所料的蓝色中等
第二个给我错误: init() 缺少 1 个必需的位置参数:'size'
为什么?
最佳答案
问题是 default_box()
返回 一个 项,一个包含 first
的双元素 tuple
和第二个
。您需要将其解压到 Box
x = default_box()
x
# ("Blue", "Medium")
# You can unpack the variable explicitly
my_box = Box(*x)
# or the function call
my_box = Box(*default_box())
关于python - 多个返回函数构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56245258/