python - 多个返回函数构造函数参数

标签 python

我有一个具有两个属性的类和一个返回两个属性的函数。 当我想初始化新对象时,为什么我不能将此函数作为构造函数参数传递。

我找到了解决方案,但我想知道为什么第一个选项不起作用。 谢谢!


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/

相关文章:

Python重命名文件从csv文件中读取名称

python - 从不同的目录调用多个 python 函数

python - 如何从同一目录中的模块导入?

python - 我可以出于测试目的更改今天的日期吗?

python - 如何从 pandas 的列表中向 Dataframe 添加行?

python - 为什么此代码对 NULL 句柄调用 CloseHandle?

python - 关于数据类型的 BeautifulSoup 代码问题

python - autotools:将常量从configure.ac传递到python脚本

python - 登录后无法打开新窗口

python - python 中的 getProcAddress for linux?