self.data = data person = Person('John', 1980, [Contact(TYPE_EMAIL, '*****@*****.**'), Contact(TYPE_PHONE, '12345678')]) serialized = cs.serialize(PersonStruct, person) print cs.deserialize(serialized)[1] def aux_constructor(structure, data): if structure == PersonStruct: return Person(data['name'], data['birth'], data['contacts']) elif structure == ContactStruct: return Contact(data['type'], data['data']) else: return data cs.set_constructor(aux_constructor) print cs.deserialize(serialized)[1] ArchiveStruct = cs.Structure( date= cs.Tuple(cs.Byte, 3), content= cs.RawData ) archive = { 'date' : (17, 05, 13), 'content': cs.serialize(PersonStruct, person) } def aux_constructor(structure, data):