1

タイマークラスへのフックを備えた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 ラッパーについても同じようにします。これは、さまざまな方法で実現することもできます (クラス メタ、マングルされた属性名など)。

4

1 に答える 1

1

callable への参照を直接保存するだけの場合は、検索する必要がある名前を保存しないでください。関数、メソッド、またはメソッドを持つクラスのインスタンスは、__call__他のものと同様にオブジェクトであり、属性に格納できexpiredます。

于 2012-10-28T21:16:22.980 に答える