【发布时间】:2020-09-11 10:12:36
【问题描述】:
我需要对变量执行我定义的一系列操作。例如,我有变量a,链应该是这样的:
a.someAction1(some parameters).someAction2(some parameters).someAction2(some parameters).someAction2(some parameters)
所以这里.someAction1(some parameters) 将a 作为第一个参数并执行.someAction1(some parameters) 中定义的一些操作。在.someAction2(some parameters) 之后,使用.someAction1(some parameters) 的结果作为第一个参数并执行.someAction2(some parameters) 中定义的一些动作等等。
变量a 可以是任何类型(当然在定义someActions 之前我们知道a 的类型)。实现这一目标的最佳方法是什么?另请提供工作示例。
【问题讨论】:
-
无论
a.someAction1返回什么,都必须有一个名为someAction2的方法。如果所有这些方法都定义在同一个类中,那么它们都必须返回该类的值。最简单的方法是让每个方法简单地返回self。 -
@chepner 您能否提供简单的工作示例来展示您的想法?例如
a=2,现在对其执行someActions中定义的一些操作。 -
显示的代码不适用于任意对象,例如 e。 G。
a=2。您必须以不同的方式编写它。 -
你不能使用这种语法调用任意函数;
someAction不是int类的属性,所以(2).someAction(...)不起作用。 -
如果您正在寻找诸如
f(x, g(y, h(z, 2)))之类的嵌套调用的替代方法,那么您可能正在寻找类似Coconut's 管道的东西:2 |> h$(z) |> g$(y) |> f$(x)。可以肯定的是,Python 本身没有这样的东西。
标签: python python-3.x oop functional-programming