这是基于我的代码的最小示例:
def fn(self):
Foo() \
.with_bar(
Bar()
.with_baz('Baz')
)
我觉得这很可读,但pycodestyle
抱怨:
stdin:5:17:E131延续线未对齐悬挂缩进
几乎在每种情况下pycodestyle
都会报告一些问题,这些问题在修复后会提高代码的可读性。但是,这次代码似乎是唯一可接受的解决方案:
def fn(self):
Foo() \
.with_bar(
Bar()
.with_baz('Baz')
)
这似乎更不易读了:缩进不一致与Foo
使用的默认延续缩进,它使.with_baz('Baz')
看起来像参数到with_bar
。这是我应该习惯的东西,它是pycodestyle
中的错误,还是有另一种格式可以保留分解PEP 8兼容的后续with_*
调用的一般风格?
(请想象with
和Foo
上有更多Bar
个方法 - 整个事情是一个构建器模式,需要分成多行才能兼容PEP 8和令人愉快的阅读。我不能只是简单地加入行来解决问题。将Bar
作为变量拉出来当然是一种选择,但这不是重点。)