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

时间:2013-02-14 15:16:17

标签: python thrift

我有Python客户端调用Thrift服务,其中包含一些可选参数:

bool postTweet(1: required Tweet tweet, 2: i32 x = 100);

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

TypeError: postTweet() takes exactly 2 arguments (1 given)

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

2 个答案:

答案 0 :(得分:5)

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

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

示例旧货代码:

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

bool postTweet(1: PostTweetParameter param);

然后,您可以构建PostTweetParameter并忽略字段x

答案 1 :(得分:1)

必须从其他参数中定义x参数。否则,它会弄乱其他东西。要创建可选参数,您的函数必须类似于:      def函数(x = 0): 有了这个,你可以选择x是使用参数的值,但是如果你通过说来调用函数      功能() X自动分配为0。 请记住,x必须单独在参数中设置,而不是与其他参数混合。