python - 跟踪上次访问 python 对象的最优雅方法是什么?

标签 python class object tracking

我有一个 python 对象列表,我会定期检查并销毁其中的一些对象——那些最近没有被访问过的对象(即没有调用任何方法)。

我可以维护上次访问的时间并在每个方法中更新它,但是有没有更优雅的方法来实现这一点?

最佳答案

正如@Marcelo Cantos 指出的那样,为您想要使用时间戳功能包装的方法使用装饰器。

考虑这个例子:

from datetime import datetime
import time
import functools

def t_access(method):
    @functools.wraps(method)
    def wrapper(self):
        self.timestamp = datetime.now()
        method(self)
    return wrapper

class Foo(object):
    @t_access
    def bar(self):
        print "method bar() called"

f = Foo()
f.bar()
print f.timestamp
time.sleep(5)
f.bar()
print f.timestamp

编辑:添加了 functools.wraps,正如@Peter Milley 所指出的。

关于python - 跟踪上次访问 python 对象的最优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6241448/

相关文章:

Python argparse - 禁用子命令的帮助?

Python 有缺陷的直方图?

python - 为什么LinearSVC做不了这种简单的分类呢?

php - 在ExpressionEngine模块开发中,哪里是添加PHP类进行实例化的好地方?

c++ - 我类的析构函数做错了吗? C++

ios - 对象类型 "id"的属性

java - 如果一个类默认是Object类的子类,如果它又是另一个对象的子类,这不就变成多重继承了吗?

python - 为什么提高精度会使这个程序更快?

c++ - 如何优化 C++ 类容器的加法运算符?

c++ - 尝试为 *this 指针赋值失败