1
我想擴展名爲OpenERP的python應用程序的一些特定於語言環境的功能。我只需要實現第三方module.function,每次OpenERP調用locale.setlocale()函數時都會調用它,而不會同時更改OpenERP和語言環境模塊源代碼。如何擴展/修補現有的模塊或包?
我能想到的唯一方法是在主應用程序包dir中提供一個名爲locale.py的模塊,但似乎這是一個unpythonic解決方法。
我想擴展名爲OpenERP的python應用程序的一些特定於語言環境的功能。我只需要實現第三方module.function,每次OpenERP調用locale.setlocale()函數時都會調用它,而不會同時更改OpenERP和語言環境模塊源代碼。如何擴展/修補現有的模塊或包?
我能想到的唯一方法是在主應用程序包dir中提供一個名爲locale.py的模塊,但似乎這是一個unpythonic解決方法。
查找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)