Thrift 0.9.2现在允许递归结构包含自身的实例。例如这个节俭的定义:
namespace py foo
struct Foo {
1: optional string member
2: optional Foo fooData
}
生成以下代码:
^{pr2}$此代码的问题在于类变量thrift_spec
:
thrift_spec = (
None, # 0
(1, TType.STRING, 'member', None, None, ), # 1
(2, TType.STRUCT, 'fooData', (Foo, Foo.thrift_spec), None, ), # 2
)
这里有两个问题:
Foo
之前引用它(并在实例化时生成NameError: name 'Foo' is not defined
)。在thrift_spec
试图包含对自身的引用,这在python(自引用元组?)。在这个元组由thrift中名为fastbinary的包使用,fastbinary是一个本机序列化和反序列化thrift对象的C模块。元组用于将类型信息传递给C-module。在
我的问题是如何最好地解决这两个问题。对于#1,我可以将thrift_spec的实例化移到类定义之后,也可以将其移到@property中。我真的不知道该怎么办。有什么方法可以获得对tuple对象的引用并将其传递给C-module吗?在
请注意,这是thrift中的一个开放错误,我希望帮助解决: https://issues.apache.org/jira/browse/THRIFT-2642
目前没有回答
相关问题 更多 >
编程相关推荐