home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

日記/2009/02/25/Pythonのクラスで__call__という特殊属性を使うとクロージャっぽくできそう (v1)

日記/2009/02/25/Pythonのクラスで__call__という特殊属性を使うとクロージャっぽくできそう (v1)

日記 / 2009 / 02 / 25 / Pythonのクラスで__call__という特殊属性を使うとクロージャっぽくできそう (v1)
id: 190 所有者: msakamoto-sf    作成日: 2009-02-25 07:59:14
カテゴリ: Python 

インスタンス生成がnew無しで関数呼び出しのようにできる、というのもあって、呼び出す部分についてはクロージャのようにしか見えない。

>>> class Klass(object):
...   def __init__(self, a):
...     self.a = a
...   def __call__(self, n):
...     return n + self.a
...
>>>
>>> k = Klass(10)
>>> k(20)
30

ところでこのコードを入力していたのは、対話形式で立ち上げていたPythonなのだけれど、途中で__call__の中身を間違えてしまい、そのままもう一度class宣言し直したら動いた。
・・・あれ?二重宣言でエラーじゃないの?
これも気になるナー。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-25 08:02:54
md5:26d8438e6740f1f87e22940f15aa07f9
sha1:8e1099c1402715dd217ebe8f1694e0bbe61abd7c
コメント
コメントを投稿するにはログインして下さい。