Как упорядочивается ParseFromString ()? - PullRequest
0 голосов
/ 30 мая 2020

Используйте FromString (bytes_data: bytes) вместо ParseFromString ()

Я не понимаю, как ParseFromString анализирует строку, а также это не работает с кодом ниже. Если бы у меня было больше строковых полей, например level_name, entity_name и т.д. c. Что вернет ParseFromString?

protocol.proto

syntax = "proto3";

message Login {
    string nickname = 1;

    string message = 2;

    enum ViewAccess {
        WHOLE = 0;
        SPEC = 1;
    }

    ViewAccess type = 3;
}

test.py

from test2 import protocol_pb2
inputs = ['Enter nickname: ', 'Enter message: ', 'Enter view: ']
login = protocol_pb2.Login()

for i in range(3):
    data = input(inputs[i])
    if i == 0:
        login.nickname = data
    elif i == 1:
        login.message = data
    elif i == 2:
        if int(data.strip()) == 0:
            login.type = protocol_pb2.Login.WHOLE
        elif int(data.strip()) == 1:
            login.type = protocol_pb2.Login.SPEC

serialized = login.SerializeToString()
print('serialized', serialized)

login2 = protocol_pb2.Login
print(login2.ParseFromString(serialized))
print(login2)

protocol_pb2.py

Ссылка PasteBin, потому что файл большой

...