如何在方法上使用decorator?

2024-10-02 18:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在方法上使用decorator,将其放在类外只返回一个内存地址:<function decor at 0x104e167b8>,将其放在类内会引发

TypeError: 'NoneType' object is not callabl

我还尝试添加*args,因为方法的参数中有一个self。你知道吗


Tags: 方法self参数objectisnotargsfunction
1条回答
网友
1楼 · 发布于 2024-10-02 18:18:31

类中装饰器的示例实现如下所示:

class Foo:
    def __init__(self):
        pass

    def decor(function):
        def wrap(*args, **kwargs):
            # Whatever your decorator does here
            return function(*args, **kwargs)
        return wrap

    @decor
    @staticmethod
    def bar():
        pass

或者在Foo的实例上调用它:

foo = Foo()
foo.bar()

如果您的装饰程序需要访问self

class Foo:
    def __init__(self, spam):
        if spam is not None:
            self.spam = spam

    def require_spam(function):
        def wrap(self, *args, **kwargs):
            try:
                self.spam
            except AttributeError:
                return
            return function(self, *args, **kwargs)
        return wrap

    @require_spam
    def bar(self):
        pass

相关问题 更多 >