Назад к вопросам
Middle+
69
questionbank

Что такое monkey patching в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Monkey patching — это динамическое изменение или расширение существующего кода во время выполнения, обычно путем замены методов, функций или атрибутов объектов. Используется для тестирования, отладки, добавления функциональности или исправления ошибок в сторонних библиотеках без изменения их исходного кода. Может привести к проблемам с читаемостью и сложностью отладки.

// Пример monkey patching
import multiprocessing as mp
import time

// Оригинальная функция wait3
def original_wait3(arg):
    time.sleep(2)
    return arg * 2

// Заглушка для тестирования
def patched_wait3(arg):
    print("Patched wait3 called")
    return arg * 10 // Изменяем логику

// Monkey patching: заменяем оригинальную функцию
mp.connection.wait3 = patched_wait3

// Создаем процесс, который будет использовать "пропатченную" функцию
def worker(conn):
    result = mp.connection.wait3(5)
    conn.send(result)
    conn.close()

parent_conn, child_conn = mp.Pipe()
p = mp.Process(target=worker, args=(child_conn,))
p.start()
print(f"Result: {parent_conn.recv()}")
p.join()

// Восстановление оригинальной функции (необходимо в реальных сценариях тестирования)
// mp.connection.wait3 = original_wait3