2012-10-28 47 views
1

我有一個與定時器類掛鉤的mongo包裝,基本上,每當集合被更新或保存時,它都會產生一個計時器,該計時器在計時器到期時又執行一個給定的函數。我的問題是,指定這些函數的pythonic方式是什麼?我的想法是簡單地將它們添加到集合包裝是這樣的:Python的類屬性與元類與類變量

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() 

然後我可以再補充我的定時器類的邏輯來運行指定的函數過期,同爲我蒙戈包裝時。這也可以通過不同的方式實現(類Meta,強化屬性名稱等),但我只是想知道在做這樣的事情時一般的共識。

回答

1

當您出租車只是直接存儲對可回收物品的引用時,不要存儲您必須查看的名稱。與__call__方法一樣,任何函數,方法或類的實例都是一個對象,與其他任何對象一樣,可以存儲在您的expired屬性中。