我试图创建一个代表树的消息类,所以我很自然地去了:
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
答案 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