python - 将变量动态替换为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 代码。在这种格式中,有时更自然地使用变量作为输入,而不是将所有代码包装在一个循环中。这就是为什么我试图笨拙地将一个变量注入一段代码的中间而不是仅仅执行一个循环的原因。
解决方案
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 中的问题。
推荐阅读
- gitlab - 访问模板中设置的环境变量
- r - 在闪亮的仪表板标题部分中添加闪亮的小部件
- laravel - 服务器中laravel项目中的子目录
- reactjs - Opentok React:如何调用OTPublisher的Publisher对象的getStats方法?
- postgresql - Laravel 模型使用 ltrees 的 postgresql `subpath` 函数获取子路径
- javascript - 使用来自对象的行创建表
- javascript - ios上的jQuery滚动问题
- simulink - dsPIC 挂起带有 simulink 代码生成器的扩展卡尔曼滤波器
- database - TYPO3 Extbase 查询总是超级慢
- javascript - 本地存储是未定义的 jQuery