Я работаю над проектом, целью которого является дополнение сообщений сокетов Python частичной информацией о порядке. Библиотека, которую я создаю, написана на Python, и ее необходимо вставлять в сообщения существующей системы, отправляемые через функции сокетов.
Я прочитал некоторые ресурсы, а именно ответ @Omnifarious на этот вопрос python-importing-from-builtin-library-when -модуль-с-имя-существует
Существует чрезвычайно уродливая и ужасная вещь, которую вы можете сделать, не задействуя механизм импорта. Это то, что вы, вероятно, не должны делать, но это, вероятно, сработает. Он превращает ваш модуль календаря в гибрид системного модуля календаря и вашего модуля календаря.
Я реализовал механизм импорта, но мы решили, что это не то направление, в котором нам хотелось бы двигаться, поскольку оно слишком сильно зависит от среды. Решение объединить классы в гибрид, а не полагаться на механизмы импорта, кажется лучшим подходом в моем случае.
Почему гибрид назвали уродливым и ужасным решением? Я хотел бы начать внедрять его в свой проект, но я опасаюсь предупреждений. Это кажется немного хакерским, но поскольку это будет частью скрипта установки, не будет ли нормально запустить это один раз?
Вот фрагмент кода, в котором вставка должна перехватить сообщение сокета перед его отправкой:
class vector_clock:
def __init__(self):
"""
Initiate the clock with the object
"""
self.clock = [0,0]
def sendMessage(self):
"""
Send Message to the server
"""
self.msg = "This is the test message to that will be interposed on"
self.vector_clock.increment(0) # We are clock position 0
# Some extraneous formatting details removed for brevity….
# connectAndSend needs interpositioning to include the vector clock
self.client.connectAndSend(totalMsg);
self.client.s.close()