假設我們有一個具有接受該類的另一個實例的實例方法的類,然後返回該類的新實例。Python中的鏈接方法
這種類型的例子是一個整數。它有__mul__
方法,它接受另一個整數並返回一個整數,它是兩個數的乘積。
這是問題所在。我有一個類實現了像__mul__
這樣的方法。我有這個類的實例列表,並且我想將上述對象的上述方法應用於之前的對象,然後將其結果應用到之前的對象等,直到我們處理完整個列表,並擁有一個對象。
一個具體的例子看起來像這樣。試想一下,我們有對象的列表...
my_objs = [do, re, me, fa, so, la, te, do]
...和想象,他們有「結合」的方法,它遵循上述的模式,我們想申請我概述了它的程序。你可能會這樣想......
my_objs_together = do.combine(re.combine(me.combine(fa.combine(so.combine(la.combine(te.combine(do)))))))
這很明顯,很明顯。這讓我想編寫一個通用的功能...
def together(list_of_objects, method_name):
combined = list_of_objects[0]
for obj in list_of_objects[1:]:
combined = getattr(combined, method_name)(obj)
return combined
...但它已經有可能是一個標準庫函數,這樣做,隨即發生在我身上?
您可能會喜歡[學習像Haskell這樣的函數式編程語言](http://learnyouahaskell.com/)。 Reduce,map和friends是Python恰好支持的功能性結構。起初很難,但一旦你瞭解了範例,你會發現很多這樣的巧妙的東西,你可以做。 – 2015-02-23 20:32:28