我有一个带有两个属性的类和一个返回两个属性的函数。 当我要初始化新对象时,为什么不能将此函数作为构造函数参数传递。
我找到了一个解决方案,但我想知道为什么第一个选项不起作用。 谢谢!
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”
为什么?
答案 0 :(得分:4)
问题是default_box()
返回一个项,两个元素的tuple
包含first
和second
。您需要将其解压缩为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())