所以我有一长串方法,类似于:
return self.append_command("fbghasjfa").append_command(input_file_part).append_command(output_video_codec_part).append_command(output_resolution_part).append_command(output_video_bitrate_part).append_command(strict_part).append_command(output_audio_codec_part).append_command(output_number_of_audio_channels_part).append_command(output_audio_bitrate_part).append_command(output_file_part).__finalized
看起来很难看。有没有办法将每个方法放在一个单独的行上?像:
return self.append_command("ffasfgas")
.append_command("fvasgvsd")
.append_command("hsdhsdhsd")
#etc
答案 0 :(得分:12)
您可以使用反斜杠续行:
return self.append_command("ffasfgas") \
.append_command("fvasgvsd") \
.append_command("hsdhsdhsd")
或括号:
return (self.append_command("ffasfgas")
.append_command("fvasgvsd")
.append_command("hsdhsdhsd"))
但最恐怖的方法是将问题抽象为单个函数调用:
return self.append_commands("ffasfgas",
"fvasgvsd",
"hsdhsdhsd")
使用reduce
是另一种选择,但不是特别优雅:
return reduce(MyClass.append_command, ["ffasfgas",
"fvasgvsd",
"hsdhsdhsd"], self)
甚至
return reduce(operator.methodcaller('append_command'),
["ffasfgas",
"fvasgvsd",
"hsdhsdhsd"], self)
答案 1 :(得分:2)
转义换行符或括号表达式。
foo \
.bar \
.baz
(foo
.bar
.baz)
答案 2 :(得分:2)
你可以这样做:
return self.append_command("ffasfgas") \
.append_command("fvasgvsd") \
.append_command("hsdhsdhsd")
# etc