Bruce.です。
UNIX USERの2月号にPython 2.4の紹介記事が載っていて、デコレータの
例があったのですが読んでいて分からなかったので質問します。
ちと長いですが、誌面からスクリプトを
---
import math
def declareArgs(*argTypes):
def checkArguments(func):
assert func.func_code.co_argcount == len(argTypes)
def wrapper(*args, **kwargs):
pos = 1
for (arg, argType) in zip(args, argTypes):
assert isinstance(arg, argType), \
"Value %r dose not match %s at %d" % (arg,
argType, pos)
pos += 1
return func(*args, **kwargs)
wrapper.func_name = func.func_name
return wrapper
return checkArguments
@declareArgs(float, float)
def calcDistance(x, y):
return match.sqrt(x * x + y * y)
print calcDistance(3.14, 1.592)
print calcDistance(2.0, 4)
-----
で、checkArguments の引数 funcなんですがどっからわいてでたんでしょう?
そういうヤクソクなんでしょうか? 関数を引数にとる関数を返すとか。
--
木村浩一
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
mail kbk@...
web www.kt.rim.or.jp/~kbk/index.html#zakkicho
homepage3.nifty.com/farstar/