你能在一行中初始化 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]))
现在我想要的是 out1
、out2
和 out3
.
的初始化不必重复三次
当然这不行:
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)
假设我想在初始化 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]))
现在我想要的是 out1
、out2
和 out3
.
当然这不行:
out1=out2=out3=Output(layout={'border': '1px solid black'})
因为这三个 out
是同一个对象。
假设您有大约 10 次初始化要做,什么是无需编写 10 行代码就可以完成它的不错的 pythonic 方法?
其他对我帮助不大的咨询:
在列表中创建 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)