Найти - Пользователи
Полная версия: Что такое манки-патчинг?
Начало » Django » Что такое манки-патчинг?
1
romankrv
Здравствуйте.

Часто встречаю упоминание в сети манки-патчинг. Так вопрос:
Что такое манки-патчинг? Если можно привести простейший пример его кода.
slav0nic
http://en.wikipedia.org/wiki/Monkey_patch
В джанге смотри add_to_class метод
redbaron
monekey patch это что-то вроде хака. Например пользуешься ты либой superlib, и очень нравится тебе из нее функция superlib.make_cool() , но ты бы хотел что-бы она вела себя немного по-другому. И вместо того, чтобы писать патч , слать автору и т.д. ты просто в своем проекте манки патчишь эту либу примерно так:
import superlib

def new_make_cool():
... тут делаешь что тебе нужно

superlib.make_cool = new_make_cool

.. тут дальше твой основной код
после чего кто-бы не вызывл superlib.make_cool (даже если она используется где-то внутри самой superlib) она теперь будет вести себя как нужно тебе, а не авторам либы.
prokoptsev
А обратно как вернуть?
FishHook
prokoptsev
А обратно как вернуть?
Это же не на всю жизнь, а только внутри твоей программы, пока она работает.

fata1ex
Ну почему же. Есть теория, что monkey-patching это на всю жизнь…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB