Мне не удалось получить доступ к (вложенным) перечислениям в тривиальном сообщении буфера протокола.Я пытался в любом случае, вложенный или отделенный от DataNodeManagement
!:
syntax = "proto3";
message DataNodeManagement {
string name = 1;
string id = 2;
string origin = 3;
ConnectionType con_type = 4;
enum ConnectionType {
UNKNOWN = 0;
MQTT = 1;
}
}
Я использую этот код для заполнения данных в моем сообщении:
config = data_node_pb2.DataNodeManagement()
config.name = "Scanner1"
config.id = key
config.origin = "PC1"
config.con_type = data_node_pb2.ConnectionType.MQTT
# or
# config.con_type = data_node_pb2.DataNodeManagement.ConnectionType.MQTT
datasource.advertise_data_node(config.SerializeToString())
И он жалуется:
Traceback (most recent call last):
File "scanner-connector.py", line 144, in <module>
config.con_type = data_node_pb2.ConnectionType.MQTT
AttributeError: 'EnumTypeWrapper' object has no attribute 'MQTT'
соответственно:
Traceback (most recent call last):
File "scanner-connector.py", line 144, in <module>
config.con_type = data_node_pb2.DataNodeManagement.ConnectionType.MQTT
AttributeError: type object 'DataNodeManagement' has no attribute 'ConnectionType'
Я использую следующие версии:
python --version
Python 3.6.6 :: Anaconda custom (64-bit)
protoc --version
libprotoc 3.6.1
Есть ли что-то особенное, что я пропустил как новичок?