3

したがって、次のような非常に長い一連のメソッドがあります。

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
4

3 に答える 3

12

バックスラッシュの行継続を使用できます。

return self.append_command("ffasfgas") \
    .append_command("fvasgvsd") \
    .append_command("hsdhsdhsd")

または括弧:

return (self.append_command("ffasfgas")
        .append_command("fvasgvsd")
        .append_command("hsdhsdhsd"))

しかし、これを行う最もPython的な方法は、問題を単一の関数呼び出しに抽象化することです:

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)
于 2012-06-29T16:45:07.050 に答える
2

改行をエスケープするか、式を括弧で囲みます。

foo \
.bar \
.baz

(foo
.bar
.baz)
于 2012-06-29T16:43:50.030 に答える
2

あなたはこれを行うことができます:

return self.append_command("ffasfgas") \
           .append_command("fvasgvsd") \
           .append_command("hsdhsdhsd") 
# etc
于 2012-06-29T16:45:31.723 に答える