Python protoRPC:递归消息class
Python protoRPC: Recursive message class
我正在尝试制作一条消息 class 来代表一棵树,所以我自然而然地选择了:
class Node(messages.Message):
name = messages.StringField(1)
children = messages.MessageField(Node,2,repeated=True)
但这行不通,因为 line 3
Node
尚未定义且未解决。
关于如何使用 protorpc 消息制作树(任意树,而不是固定深度的树)的任何想法?
编辑:
尝试过:
class AbstractNode(messages.Message):
pass
class Node(AbstractNode):
name = messages.StringField(1)
children = messages.MessageField(AbstractNode, 2, repeated=True)
端点抱怨:MessageDefinitionError: Message types may only inherit from Message
您可以使用字符串来执行此操作:
>>> class Node(messages.Message):
... name = messages.StringField(1)
... children = messages.MessageField('Node',2,repeated=True)
您可以在此处的回显服务演示中看到这方面的示例:
https://github.com/google/protorpc/blob/master/demos/echo/services.py#L81
我正在尝试制作一条消息 class 来代表一棵树,所以我自然而然地选择了:
class Node(messages.Message):
name = messages.StringField(1)
children = messages.MessageField(Node,2,repeated=True)
但这行不通,因为 line 3
Node
尚未定义且未解决。
关于如何使用 protorpc 消息制作树(任意树,而不是固定深度的树)的任何想法?
编辑:
尝试过:
class AbstractNode(messages.Message):
pass
class Node(AbstractNode):
name = messages.StringField(1)
children = messages.MessageField(AbstractNode, 2, repeated=True)
端点抱怨:MessageDefinitionError: Message types may only inherit from Message
您可以使用字符串来执行此操作:
>>> class Node(messages.Message):
... name = messages.StringField(1)
... children = messages.MessageField('Node',2,repeated=True)
您可以在此处的回显服务演示中看到这方面的示例:
https://github.com/google/protorpc/blob/master/demos/echo/services.py#L81