微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

装饰器是如何用 Python 中的类实现的?

如何解决装饰器是如何用 Python 中的类实现的?

def decorator_function(original_function):
    def wrapper_function():
        print('wrapper_function executed before {}'.format(original_function.__name__))
        return original_function()
    return wrapper_function

@decorator_function   
def display():
    print('display function ran...')

以上语法可以翻译如下: display = decorator_function(display)

同样的事情可以用一个类来完成...

class decorator_class(object):

    def __init__(self,original_function):
        self.original_function = original_function

    def __call__(self):
        print('call method before {}'.format(self.original_function.__name__))
        self.original_function()

@decorator_class
def display():
    print('display function ran...')

我能理解这个实现。但我不明白语法是如何在幕后翻译的,就像我在装饰器函数的情况下提到的那样。 我也无法理解如何使用 @classmethod 和 @staticmethod 实现装饰器。 有人可以帮忙举个例子吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。