Используйте 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, потому что файл большой