По умолчанию Pyro использует сериализатор Serpent, который, в свою очередь, использует примитивные типы python для сериализации. Обычно это будет словарь. Если это класс, который он не может легко распознать, или у класса не определен «подходящий» метод сериализации, он обратится к специальной словарной форме, такой как эта:
{
"__class__": "pakcage.Classname"
"property1": "value1",
...
}
Вы не видите этого в своей сериализованной форме. Это означает, что это был не Пиро (точнее, Змей), который сериализировал его для вас. Произошло (я думаю) то, что объект Protobuf определяет метод __getstate __ (), который возвращает сериализованную форму объекта protobuf, который вы видите. Обратной стороной этого является __setstate __ (...) (эти методы «заимствованы» из встроенного в Python механизма сериализации pickle). У меня нет опыта работы с protobufs, но я думаю, что все просто:
u = proxy.MyProtoBuf
message = mpb.MyProtobufMessage() # create empty protobuf object (??)
message.__setstate__(u)
сделает свое дело. Я советую вам заглянуть в документацию protobuf о том, как их объекты сериализуются (возможно, вам придется искать, как они травятся). Нижняя линия; это не то, что Пиро (или змея) контролирует.