Python 如何扩展/修补现有模块或包?

Python 如何扩展/修补现有模块或包?,python,locale,extend,Python,Locale,Extend,我想扩展名为OpenERP的python应用程序的一些特定于语言环境的特性。我所需要的只是实现一个第三方module.function,它将在每次OpenERP调用locale.setlocale()函数时调用,而不更改OpenERP和locale模块的源代码 我能想象的唯一方法是在主应用程序包dir中提供一个名为locale.py的模块,但这似乎是一个非Python解决方案。查找。这不是最优雅的技巧,但有时它是唯一的选择 在您的情况下,您可以用自己的函数替换locale.setlocale()

我想扩展名为OpenERP的python应用程序的一些特定于语言环境的特性。我所需要的只是实现一个第三方module.function,它将在每次OpenERP调用locale.setlocale()函数时调用,而不更改OpenERP和locale模块的源代码

我能想象的唯一方法是在主应用程序包dir中提供一个名为locale.py的模块,但这似乎是一个非Python解决方案。

查找。这不是最优雅的技巧,但有时它是唯一的选择

在您的情况下,您可以用自己的函数替换
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)