作者: 機械伯爵
日時: 2004/12/6(10:32)
 Python 2.4 の正式バージョンが出ましたので、新機能
のレビューなんぞしてみたいと思います。

 まずは、デコレータ(修飾子)。

 「そもそもデコレータってナニ?」な私には、目鱗な
機能です。

 簡単に言えばこういうことらしい・・・です。

<デコレータの書き方>
@deco
def func(arg...):
  ...

<意味>
func = deco(func)

 なんのこっちゃ? ですが、よくよく考えてみると、
前バージョンで登場したクラスメソッドなんかにはうっ
てつけでしょう。

<前バージョンの書き方>
def meth(self,arg...):
  ...

meth = classmethod(meth)

<2.4以降>
@classmethod
def meth(self, arg...):
  ...

 おお、すっきりした☆

 あと、初期値が必要な関数なんかに、初期値を渡すの
も簡単です。

def deco(func):
  func.v0 = 100
  func.v1 = 200
  func.v2 = 400
  return func


@deco
def f0():
  return f.v0 + f.v1 * f.v2

@deco
def f1():
  return f.v0 * f.v1 + f.v2

 ちなみに、デコレータ名は普通の関数名ですから、モ
ジュールインポート風 (@module.func) でも、メソッド
風 (@object.method) でも、クラスメソッド風
(@classname.method) でも可能です(試してみました☆)

 なお、デコレータを @a @b @c と並べると、
a(b(c(func))) という扱いなるそうな。

 使い方、工夫次第で面白く使えそうな機能でもはあり
ますので、色々考えてみようかと思います。

 /機械伯爵/