home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

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

作成日: 2009-02-25 07:59:14   /   last updated at: 2009-02-25 08:02:54
カテゴリ: 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宣言し直したら動いた。
・・・あれ?二重宣言でエラーじゃないの?
これも気になるナー。

original url: https://www.glamenv-septzen.net/view/190