Найти в Дзене
MakeBetter[Code] Blog

[🐒]Обезьяний патч - что это такое?

Обезьяний патч (Monkey patching) - это техника, позволяющая изменять поведение объектов и классов во время выполнения программы. Она включает в себя добавление, удаление или изменение методов и атрибутов объектов без необходимости изменять исходный код. Это может быть полезно по ряду причин, например, для добавления новых возможностей в существующие библиотеки, исправления ошибок в коде сторонних разработчиков или экспериментирования с новыми идеями без необходимости написания многообразного кода. В динамических языках, таких как Python, Ruby и JavaScript, объекты не являются фиксированными по своей структуре и могут быть изменены во время работы приложения. Это отличается от статических языков, таких как Java или C++, где объекты определяются своим классом и не могут быть изменены во время выполнения. Эта гибкость и делает возможным monkey patching. Пример Monkey Патчинга Этот пример демонстрирует, как обезьяний патч может быть использован для изменения поведения сторонней библиотеки
Оглавление
Патч. via Stable Diffusion 1.5
Патч. via Stable Diffusion 1.5

Обезьяний патч (Monkey patching) - это техника, позволяющая изменять поведение объектов и классов во время выполнения программы. Она включает в себя добавление, удаление или изменение методов и атрибутов объектов без необходимости изменять исходный код.

Это может быть полезно по ряду причин, например, для добавления новых возможностей в существующие библиотеки, исправления ошибок в коде сторонних разработчиков или экспериментирования с новыми идеями без необходимости написания многообразного кода.

В динамических языках, таких как Python, Ruby и JavaScript, объекты не являются фиксированными по своей структуре и могут быть изменены во время работы приложения. Это отличается от статических языков, таких как Java или C++, где объекты определяются своим классом и не могут быть изменены во время выполнения. Эта гибкость и делает возможным monkey patching.

Пример Monkey Патчинга

-2
Вывод программы
Вывод программы
  1. В этом примере мы вносим изменения в библиотеку requests, чтобы добавить дополнительный логинг в метод get. Мы определяем новую функцию, new_get, которая принимает те же аргументы, что и оригинальный метод get, но также выводит некоторую информацию о запросе перед вызовом оригинального метода get.
  2. Затем мы используем обезьяний патч, чтобы заменить оригинальный метод get нашей новой реализацией. Для этого мы назначаем оригинальный метод get новому атрибуту old_get, а затем заменяем метод get нашей новой реализацией.
  3. Наконец, мы делаем запрос с использованием модифицированного метода get и выводим код состояния ответа.

Этот пример демонстрирует, как обезьяний патч может быть использован для изменения поведения сторонней библиотеки без необходимости изменять ее исходный код напрямую. В этом примере мы добавили дополнительный логинг в метод get, но мы можем использовать эту технику для добавления новой функциональности, исправления ошибок или изменения других частей библиотеки по мере необходимости.

🎉✨ Поздравляю с завершением чтения статьи

Если Вам понравилось, можете подписаться, оставить комментарий и поставить лайк.

Также, можете взглянуть на некоторые из моих других публикаций, чтобы найти еще больше отличного контента 🔥:

[🍃] Дата-классы в Python | Ключевые знания для начинающих
MB Magazine24 апреля 2023
[🍃] Паттерн "Фабрика" в Python | Ключевые знания для начинающих
MB Magazine23 апреля 2023
[🍃] Отладка и Логирование в Python | Ключевые знания для начинающих
MB Magazine13 апреля 2023