Python类属性vs元类与类变量

时间:2012-10-28 21:08:24

标签: python

我有一个mongo包装器,它带有一个定时器类的钩子,基本上,每次更新或保存一个集合时,它会生成一个定时器,该定时器在过期时执行给定的函数。我的问题是,指定这些函数的pythonic方法是什么?我的想法只是将它们添加到集合包装器中,如下所示:

class TestCollection(Collection):
    __name__ = 'test_collection'
    __database__ = 'test'
    __primary_key__ = 'field_1'

    post_delete = 'call_this_func_with_getattr_after_delete'
    expire = 'also_call_this_with_getattr_when_timer_expires'

    field_1 = Key()
    field_2 = Key()
    field_3 = Key()

然后我可以在我的计时器类中添加逻辑以在过期时运行指定的函数,并且对于我的mongo包装器也是如此。这也可以通过不同的方式实现(类Meta,受损的属性名称等等)但我只是想在做这样的事情时知道普遍的共识。

1 个答案:

答案 0 :(得分:1)

当您只是直接存储对callables的引用时,不要存储您必须查找的名称。任何具有__call__方法的类的函数,方法或实例都是一个对象,可以存储在expired属性中。