2010-03-31 54 views
1

我想擴展名爲OpenERP的python應用程序的一些特定於語言環境的功能。我只需要實現第三方module.function,每次OpenERP調用locale.setlocale()函數時都會調用它,而不會同時更改OpenERP和語言環境模塊源代碼。如何擴展/修補現有的模塊或包?

我能想到的唯一方法是在主應用程序包dir中提供一個名爲locale.py的模塊,但似乎這是一個unpythonic解決方法。

回答

2

查找Monkey Patching。這不是最優雅的技術,但有時它是唯一的選擇。

在你的情況下,你可以用你自己的函數代替locale.setlocale(),它可以做任何你想要的。它看起來像這樣:

import locale 

original_setlocale = locale.setlocale 

def my_setlocale(category, locale=None): 
    # Do anything you want 
    # optionally call original function 
    original_setlocale(category, locale)