Если вы хотите сериализовать и десериализовать объекты Python, pickle уже было указано на очень хорошее и стандартное решение. Python также использует repr для получения строковых представлений объектов, которые могут использоваться для создания эквивалентного объекта. В вашем случае самым простым способом было бы добавить data
и name
в качестве аргументов конструктора и определить функцию __repr__
, используя repr
членов данных:
class A:
def __init__(self, data, name):
self.data = data
self.name = name
def __repr__(self):
return "%s(%s,%s)" % (self.__class__.__name__, repr(self.data), repr(self.name))
Тогда вы можете сделать
a = A('test', 'Bob')
a_repr = repr(a)
a_copy = eval(a_repr)
и так далее. Очевидно, это станет трудным для больших и более сложных классов.