作者: Naomasa Numajiri
日時: 2002/5/16(08:19)
こんにちは、

アドバイスありがとうございます。
素晴らしいっす。lambdaのデフォルト値の機能をうまく使えば
いいんですね。(TkinterでButtonに関数を割り当てる時も
このパラメータのデフォルト値の機能を利用するとアドバイス
していた本を読んだことがあります。)

| 
| 石本です。
| 
| On Thu, 16 May 2002 00:47:11 +0900
| Atsuo Ishimoto <ishimoto@...> wrote:
| 
| > この場合のfunc0, func1はこんなのでどうでしょ?
| > 
| > class Func:
| >     def __init__(self, f=None):
| >         self.f = f
| > 
| >     def __mul__(self, r):
| >         return Func(lambda x, r=r: self(r(x)))

ここは
| >         return Func(lambda x, self=self, r=r: self(r(x)))
と修正させていただいて動作確認いたしました。
期待していた結果となりました。

| > 
| >     def __call__(self, x):
| >         return self.f(x)
| > 
| 
| 
| こう書いたほうが判り易いかな?

好みとしては上です。

| 
| class Func:
|     def __mul__(self, r):
|         return Composit(lambda x, r=r: self(r(x)))
| 
| class Composit(Func):
|     def __init__(self, f=None):
|         self.f = f
|     
|     def __call__(self, x):
|         return self.f(x)
| 
<後略>

でわでわ

-- ぬ