我试图用 classmethod 装饰一个 functools.lru_cache 。我的尝试失败了:

import functools
class K:
    @functools.lru_cache(maxsize=32)
    @classmethod
    def mthd(i, stryng: str): \
        return stryng

obj = K()

错误消息来自 functools.lru_cache :
TypeError: the first argument must be callable

最佳答案

类方法本身是不可调用的。 (可调用的是类方法的 __get__ 方法返回的对象。)

因此,您希望将 lru_cache 修饰的函数转换为类方法。

@classmethod
@functools.lru_cache(maxsize=32)
def mthd(cls, stryng: str):
    return stryng

关于python - 如何使用 `classmethod` 正确装饰 `functools.lru_cache` ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58649523/

10-13 09:37