首页 > 解决方案 > python中带有参数的自定义静态方法装饰器

问题描述

在我的情况下,我想制作一个应该像 a 一样工作的自定义装饰器@staticmethod,但也有一些参数。

伪代码:

class Deco:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

        def func(f, *args, **kwargs):
            return f(*args, **kwargs)

        self.f = func

    def __get__(self, obj, objtype=None):
        return self.f

    def __call__(self, f, *_args, **_kwargs):
        def inner(*_args, **_kwargs):
            print(self.arg1, self.arg2)
            return self.f(f, *_args, **_kwargs)

        return inner


class Test:
    arg1=3
    arg2=4

    @Deco(arg1=1, arg2=2)
    def test1(arg1, arg2):
        print(arg1, arg2)

    def test2(self):
        Test.test1(arg1=self.arg1, arg2=self.arg2)
        print('Works!')

任何想法它是如何工作的?

标签: pythonclassdecoratorstatic-methodspython-decorators

解决方案


推荐阅读