我不打算更改方法的实际签名
我不想使用新参数名称
创建新方法如何在方法的签名中修改参数的名称?
我在自定义内部框架上为Spark Streaming作业创建一个抽象类,它需要一个参数名称来匹配Kafka主题的名称,否则它会将参数作为可选标记。
以下是有问题的方法:
def apply(self, sc, records):
if not self.FILTER_FIELDS:
raise Exception('SalesForceTransformStage requires FILTER_FIELDS:[_label_,[_values_]]')
return shipping_label \
.filter(lambda rec: rec[self.FILTER_FIELDS[0]] in self.FILTER_FIELDS[1]) \
.filter(self.filters) \
.map(lambda rdd: format_record_keys_for_salesforce(rdd,
self.SALESFORCE_FIELD_MAP,
self.SALESFORCE_FIELD_LIMITS,
self.INPUTS[self.INPUTS.keys()[0]])) \
.map(self.mappers) \
.map(self.OUTPUT.project_row)
现在,参数records
被选为可选标志,因此当我运行脚本时,会发生这种情况:
usage: new_shipping_label_event.py [-h] [--force-rebuild] --records RECORDS
[--save-to SAVE_TO]
new_shipping_label_event.py: error: argument --records is required
但是,将参数名称更改为shipping_label
(kafka主题的名称),可以正常运行脚本。如何以编程方式设置参数的名称?
答案 0 :(得分:2)
给records
一个默认值,因此它是可选的。
def apply(self, sc, records=None):