我见过这样的装潢师,我是如何创作的呢?
@deco.deco_attribute
def add(a, b):
return a + b我知道如何创建一个装潢师,看起来像这样
import time
def timer(func):
def wrapper(*args, **kwargs):
time_in = time.time()
x = func(*args, **kwargs)
time_out = time.time()
print(time_out - time_in)
return x
return wrapper
@timer
def add(a, b):
return a + b甚至还看到了向装饰器添加参数的例子,这些都可以使用嵌套函数来完成。
def timer(*deco_args):
def inner(func):
def wrapper(*args, **kwargs):
time_in = time.time()
x = func(*args, **kwargs)
time_out = time.time()
print(*deco_args, time_out - time_in)
return x
return wrapper
return inner
@timer(2, 3)
def add(a, b):
return a + b我所知道的其他变体包括嵌套多个装饰器或将类创建为装饰器,或为类创建作为装饰器的函数。
但是如何创造上面提到的装饰师呢?
发布于 2022-03-03 07:08:34
您可以使用类并将每个装饰器都放入其中。
class deco():
@staticmethod
def time_1(func):
def inner():
return 0
return inner
@staticmethod
def time_2(func):
def inner():
return 0
return inner
@deco.time_1
def test():
return 4+5发布于 2022-03-03 06:56:48
我认为这只是你如何做好进口的问题。在您的示例中,您将只导入模块import deco,然后像使用任何其他函数一样访问该模块中的装饰器。我经常看到模块正在导入的一个地方,而不是装饰器是最热的固定装置:
import pytest
@pytest.fixture
def my_fixture():
...https://stackoverflow.com/questions/71333063
复制相似问题