装饰器是如何用 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 (将#修改为@)