说明:我尝试使用functools模块中的lru_cache装饰器来缓存两个类A和B的示例,其中B继承自A。下面是我的代码:
from functools import lru_cache
@lru_cache(1)
class A:
def __init__(self):
pass
@lru_cache(1)
class B(A):
pass
b = B()
但是,当我运行这段代码时,我得到以下错误:
TypeError: lru_cache() missing required argument 'cache_info_type' (pos 4)
我正在使用Python 3.8,我不知道为什么我会得到这个错误。谁能帮助我了解导致此错误的原因以及如何修复它?提前感谢您的帮助。
我尝试使用lru_cache装饰器来缓存两个类A和B的示例,其中B继承自A。我希望代码运行时没有错误,并为每个类创建一个示例,如果我创建了同一个类的另一个示例,则将缓存并重用该示例。然而,我遇到了一个TypeError,消息“lru_cache()missing required argument 'cache_info_type'(pos 4)”,这是我没有预料到的。我不知道为什么会发生这个错误,我正在寻求帮助,以了解错误的原因以及如何修复它。
2条答案
按热度按时间mum43rcc1#
我认为
lru_cache
可能不适用于class,因为class在创建后不会重新计算。您可以尝试重写__new__
方法来实现您的需求。这也类似于单例模式
gab6jxml2#
等你找到了
A
不是您定义的类。A
是一个LRU缓存 Package 器。当你这样做
你试图从 Package 器继承,而不是你定义的类。