gpt4 book ai didi

Python 使用设置初始化一个 memoizing 装饰器

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:27 25 4
gpt4 key购买 nike

我在库中有一个 memoizer 装饰器类,如下所示:

class memoizer(object):
def __init__(self, f):
"some code here"
def __call__(self, *args, **kwargs):
"some code here"

当我将它用于库中的函数时,我使用@memoizer。但是,我想让客户端(即使用该库的程序员)使用一些参数从库外部初始化内存类,以便它适用于客户端程序中使用的装饰器的所有用途。特别是,这个特定的内存类将结果保存到一个文件中,我希望客户端能够指定文件可以占用多少内存。这可能吗?

最佳答案

您可以使用装饰器工厂实现此目的:

class DecoratorFactory(object):
def __init__(self, value):
self._value = value

def decorator(self, function):
def wrapper(*args, **kwargs):
print(self._value)
return function(*args, **kwargs)
return wrapper

factory = DecoratorFactory("shared between all decorators")

@factory.decorator
def dummy1():
print("dummy1")

@factory.decorator
def dummy2():
print("dummy2")

# prints:
# shared between all decorators
# dummy1
dummy1()

# prints:
# shared between all decorators
# dummy2
dummy2()

如果您不喜欢工厂,您可以在一些模块中创建全局变量并在使用我们的装饰器之前设置它们(不是很好的解决方案,IMO 工厂更干净)。

关于Python 使用设置初始化一个 memoizing 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21808773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com