你能在一行中初始化 class 的多个实例吗?

Can you initialise multiple instances of a class in one single line?

假设我想在初始化 class 的多个实例时压缩我的代码。

此代码有效:

from ipywidgets import Output,HBox
out1 = Output(layout={'border': '1px solid black'})
out2 = Output(layout={'border': '1px solid black'})
out3 = Output(layout={'border': '1px solid black'})

with out1: display('here is out1')
with out2: display('here is out2')
with out3: display('here is out3')

display(HBox([out1,out2,out3]))

现在我想要的是 out1out2out3.

的初始化不必重复三次

当然这不行:

out1=out2=out3=Output(layout={'border': '1px solid black'})

因为这三个 out 是同一个对象。

假设您有大约 10 次初始化要做,什么是无需编写 10 行代码就可以完成它的不错的 pythonic 方法?

其他对我帮助不大的咨询: Can one initialize multiple variables of some type in one line? Python creating multiple instances for a single object/class

在列表中创建 Output 个对象,然后您可以遍历列表:

outputs = [Output(layout={'border': '1px solid black'}) for _ in range(3)]

for i, out in enumerate(outputs, 1):
    with out:
        display(f"here is out{i}")

display(HBox(outputs))

如果您不介意将这些变量保存在列表中, 我会考虑一个调用函数的循环

from ipywidgets import Output,HBox

def get_obj():
    return Output(layout={'border': '1px solid black'})

def do_display(out, i):
    with out: display(f"here is out{i}")

outs = [get_obj() for _ in range(3)]
for i, out in enumerate(outs):
    do_display(out, i)