2010-03-31 4 views
1

Я хочу расширить некоторые языковые функции приложения python под названием OpenERP. Все, что мне нужно - это реализовать стороннюю модульную функцию, которая будет вызываться каждый раз, когда OpenERP вызывает функцию locale.setlocale(), не меняя ни OpenERP, ни исходный код исходного кода.Как продлить/исправить существующий модуль или пакет?

Единственный способ, который я могу себе представить, это предоставить модуль с именем locale.py внутри основного пакета пакета приложения, но, похоже, это обходное решение.

ответ

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)