2010-03-31 17 views
1

Je souhaite étendre certaines fonctionnalités locales d'une application python nommée OpenERP. Tout ce dont j'ai besoin, c'est d'implémenter un module.function qui serait appelé chaque fois que OpenERP appelle la fonction locale.setlocale() sans changer le code source d'OpenERP ou du module de locale. La seule façon que je peux imaginer est de fournir un module nommé locale.py dans le répertoire principal de l'application, mais il semble que ce soit une solution de contournement non pythonienne.Comment étendre/corriger un module ou un paquet existant?

Répondre

2

Rechercher Monkey Patching. Ce n'est pas la technique la plus élégante, mais parfois c'est la seule option.

Dans votre cas, vous pouvez remplacer votre propre fonction par locale.setlocale() qui fera ce que vous voulez. Cela ressemblerait à quelque chose comme ça:

import locale 

original_setlocale = locale.setlocale 

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