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