Thrift Python客户端中具有默认值的默认参数

Mon*_*aro 4 python thrift

我有Python客户端调用Thrift服务,带有一些可选参数,如下所示:

bool postTweet(1: required Tweet tweet, 2: i32 x = 100);
Run Code Online (Sandbox Code Playgroud)

如果我试图从Python客户端调用此服务而不传递可选参数x,我会得到一个异常:

TypeError: postTweet() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

任何线索,为什么我得到这个异常,但它是一个默认值的可选参数?

yeg*_*gle 6

使用默认值定义一个thrift函数是不可能的(至少从我读完节俭白皮书后的理解)

你可以做的是定义一个特殊的参数结构,让你省略一些字段.

节俭代码示例:

struct PostTweetParameter {
1: required Tweet tweet;
2: optional i32 x;
}

bool postTweet(1: PostTweetParameter param);
Run Code Online (Sandbox Code Playgroud)

然后你可以构造省略的PostTweetParameter字段x.

  • 看起来它不会_工作_。两年后仍开放 (2认同)