2009年12月1日星期二

Python 中多个 decorator class 的属性丢失问题

Stack Overflow 上有人问到在 Python 中,为一个函数指定多个 decorator class 时出现的属性丢失问题。其下就有人贴出了答案,在 decorator class 的 __init__ 中进行属性的复制:

class NullDecl (object):
    def __init__ (self, func):
        self.func = func

        for n in set(dir(func)) - set(dir(self)):
            setattr(self, n, getattr(func, n))
    def __call__ (self, * args):
        return self.func (*args)

    def __repr__(self):
        return self.func


上面贴出的这个答案,最后的 __repr__ 是提问者自己补充的,用于 debug。上述属性的复制看起来真像在 JavaScript 中实现继承的法子。 XD

标签: ,

0 条评论:

发表评论

订阅 博文评论 [Atom]

<< 主页