2

可能重复:
如何在 Python 中打破一行链式方法?

以下问题是关于 python 代码风格的,可能是可重用库的设计。因此,我有将图形创建链接到单个大线的构建器,如下所示:

graph.builder() \
        .push(root) \
        .push(n1) \
        .arc(arcType) \ #root-arc-n1 error is there
        .push(n2) \
...

在第 4 行,我收到关于错误符号 (#) 的错误。所以一般问题如何针对长构建器路径生成注释良好的代码。同样作为一个很好的答案,我将感谢有关更改构建器以允许注释以澄清代码的建议。

4

3 回答 3

1

您可以通过使用中间变量来最好地做到这一点:

builder = graph.builder()
builder = builder.push(root).push(n1)
builder = builder.arc(arcType)  #root-arc-n1 error is there
builder = builder.push(n2). # ... etc. ...
于 2012-11-10T09:54:32.880 回答
1

将整个内容括在括号中会强制 python 将其视为单个表达式:

(graph.builder()
    .push(root)
    .push(n1)
    .arc(arcType) #root-arc-n1 error is there
    .push(n2)
)

我可能很想重新设计您的构建器方法以允许:

graph.builder(lambda g: g
    .push(root)
    .push(n1)
    .arc(arcType) #root-arc-n1 error is there
    .push(n2)
)

只是为了让括号的位置更合理

于 2012-11-10T11:41:49.400 回答
0

它看起来不太好,但这允许您使用内联注释:

graph.builder(
    ).push(root
    ).push(n1
    ).arc(arcType #root-arc-n1 error is there
    ).push(n2)

http://www.python.org/dev/peps/pep-0008/#maximum-line-length

于 2012-11-10T10:00:01.437 回答