Python protoRPC:递归消息类

时间:2015-04-14 11:10:52

标签: python google-app-engine protorpc

我试图创建一个代表树的消息类,所以我很自然地去了:

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

1 个答案:

答案 0 :(得分:3)

您可以使用字符串执行此操作:

>>> class Node(messages.Message):
...     name = messages.StringField(1)
...     children = messages.MessageField('Node',2,repeated=True)

您可以在此处的echo服务演示中看到此示例:

https://github.com/google/protorpc/blob/master/demos/echo/services.py#L81