2010-03-31 33 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)