如何在Python中通过字典实现方法链式调用自动化?
动态实现Python链式调用方法
现有一个Example类的实例e,其perform_action方法支持链式调用,示例如下:
e = Example() instance_copy = e.perform_action("A", "Good") .perform_action("B", "Very Good") .perform_action("C", "Poor")现需根据给定字典
d = {'A': 'Good', 'B': 'Very Good', 'C': 'Poor', 'D': 'Very Poor'},自动实现上述相同的方法链式调用流程,要求链式调用长度可随字典大小动态调整,无需关注Example类的具体实现。请问该如何在Python中实现?
解决方案
你可以通过迭代字典的键值对,逐步构建链式调用,代码实现非常简洁:
e = Example() current = e for key, val in d.items(): current = current.perform_action(key, val) instance_copy = current
逻辑说明
- 以原始实例
e作为链式调用的起始点,用临时变量current保存当前实例状态 - 遍历字典中的每一组键值对,每次调用
perform_action后,将返回的新实例更新到current中 - 遍历结束后,
current就等价于手动完成所有链式调用后的实例,直接赋值给instance_copy即可
这种写法完全适配字典的动态大小,不管字典新增或删除键值对,都会自动调整链式调用的次数,且不需要了解Example类的内部实现,只依赖perform_action方法的链式特性(即方法返回可继续调用该方法的实例)。
内容的提问来源于stack exchange,提问作者rishm.msc
相关产品推荐
相关产品推荐

