首页 > 解决方案 > 将变量动态替换为python中的参数

问题描述

在 python 中,我试图想出一个好方法来添加一个变量,该变量在每次遇到变量类作为输入之一时动态复制主对象。因此,如果变量类有 2 个不同的输入值,它将创建 2 个对象。例如:

objects = Object(arg1=10, arg2=Variable([10, 20]))

输出:

objects = [Object(arg1=10, arg2=10), Object(arg1=10, arg2=20)]

棘手的部分是变量类也可以是任何子对象的任何输入。例如

objects = Object(subobject1=Subobject(arg1=Variable([10, 20]))

输出:

objects = [Object(subobject1=Subobject(arg1=10)), Object(subobject1=Subobject(arg1=20))]

这是一个 Blockly 项目,它是一种可视化编程语言,可以从块生成 python 代码。在这种格式中,有时更自然地使用变量作为输入,而不是将所有代码包装在一个循环中。这就是为什么我试图笨拙地将一个变量注入一段代码的中间而不是仅仅执行一个循环的原因。

标签: python

解决方案


Object.__new__您期望在or内部完成太多工作Object.__init__,因为似乎应该考虑用于创建其参数之一的参数。

要明确,并使用列表理解来说明您的意思。

objects = [Object(arg1=10, arg2=x) for x in [10, 20]]

或者

objects = [Object(subobject=Subobject(arg1=x)) for x in [10, 20]]

如果您想要 Blockly 中的其他构造,这是 Blockly 中要解决的问题,而不是 Python 中的问题。


推荐阅读