Как конвертировать строку в класс?

У меня есть строка, которая выглядит как класс socket.socket, но т.к это строка, она не имеет атрибута.

print(type(x)

<class 'str'>

При выводе объекта:

<class 'socket.socket'>

Дело в том, что до этого я сохранил объект как строку, а теперь надо конвертировать обратно в объект, чтобы выполнить функцию send(из socket).

Как это сделать?


Ответы (1 шт):

Автор решения: MrZodvig

Судя по твоему вопросу ты не знаешь основ ООП. Да, ты можешь распарсить строку до socket.socket: name = str(type(x))[8:2] Можешь импортировать функцию: from importlib import import_module as im im(name.split('.')[0]) И можешь вызвать метод с exec: exec(f'newClass = {name}()') Но по этой строке нельзя узнать какие данные ты скормил конструктору, и как класс в процессе поменялся, это будет новый экземпляр класса. Точная копия будет затруднительна, но в теории возможна, запакуй инфу о классе в строку, если хочешь, методы атрибуты и тд, и потом распарсь.

→ Ссылка