Как расширить / исправить существующий модуль или пакет? - PullRequest
1 голос
/ 31 марта 2010

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

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

1 Ответ

2 голосов
/ 31 марта 2010

Посмотрите наверх Обезьяна 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...