擅长:python、mysql、java
<p>我不认为对管道使用继承是正确的方法。你知道吗</p>
<p>相反,在这里用“简单”的例子和参数化的例子(一个使用<code>__call__</code>魔术方法的类,但是返回一个closured函数也可以,或者甚至通过<code>eval</code>“JITing”一个)。你知道吗</p>
<pre><code>def two_power(x):
return x * x
def add_one(x):
return x + 1
class CustomTransform(object):
def __init__(self, multiplier):
self.multiplier = multiplier
def __call__(self, value):
return value * self.multiplier
def transform(data, pipeline):
for datum in data:
for transform in pipeline:
datum = transform(datum)
yield datum
pipe = (two_power, two_power, add_one, CustomTransform(1.25))
print list(transform([1, 2, 4, 8], pipe))
</code></pre>
<p>将输出</p>
<pre><code>[2.5, 21.25, 321.25, 5121.25]
</code></pre>