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