Ответ 1
Из моего понимания вашего сообщения вы хотите изменить существующую библиотеку сокетов, чтобы внедрить в нее свои собственные функции.
Да, это вполне выполнимо, и, возможно, это даже самое простое решение вашей проблемы, но вы должны учитывать все последствия того, что вы делаете.
Самое главное, что вы не просто модифицируете сокет для себя, а для чего-либо, что выполняется в любой части вашего процесса, которая использует библиотеку сокетов, если только она не использует собственный загрузчик классов. Я понимаю, что есть, вероятно, какая-то существующая библиотека, которая использует сокет, и вы хотите вставить в нее эту функциональность, но это повлияет на ВСЕ.
Из этого вы должны рассмотреть вопрос: ваше изменение на 100% обратно совместимо. Если вы не можете гарантировать, что вы знаете каждый случай использования сокета какой-либо библиотекой, используемой вашим процессом (подсказка: вы не можете), то вам нужно убедиться, что она полностью сохраняет всю существующую функциональность или где-то в дороге какая-то основная библиотека собирается загадочно сломаться, и вы не поймете, почему и нет способа ее отладить. Примером чего-то 100% назад совместимого (или как можно ближе к нему) является инъекция декоратора, который сохраняет информацию о времени в один из ваших собственных модулей.
Если вы полностью это понимаете и по-прежнему считаете, что ваше решение хорошее, тогда я говорю "пойдите для этого". Однако рассмотрели ли вы какие-либо альтернативы?
Если вам просто нужно ввести эту функциональность для определенного набора библиотек, которые вы используете, я бы предложил сделать что-то вроде исправления: https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch
Вы можете подклассифицировать любую базовую библиотеку, которую хотите изменить, а затем исправить библиотеку, чтобы использовать свой класс. На этом ядре, что делает патч, он изменяет глобальные привязки, используемые в целевом модуле, для использования другого класса/модуля, чем тот, который он первоначально использовал.
PS. Я не думаю, что ваша ситуация является ситуацией, которая требует подключения механизма импорта.