当前位置: 首页 > 面试题库 >

Python中的链式方法调用缩进样式

马俊
2023-03-14
问题内容

这个问题已经在这里有了答案

如何在Python中断开一系列链接方法? (8个答案)

7年前关闭。

通过阅读PEP-8,我知道您应该将右括号与函数调用中的最后一个参数放在同一行:

ShortName.objects.distinct().filter(
    product__photo__stockitem__isnull=False)

可能最好完全避免使用长表达式。但是,如果不希望这样做, 您将如何进行多个链接方法调用? 结束语应该换行吗?

ShortName.objects.distinct().filter(
    product__photo__stockitem__isnull=False
).values_list('value', flat=True)

那么无参数方法呢? 如何在不参考中间返回值的情况下将它们写在多行上?

ShortName.objects.distinct(
    ).filter().values() # looks ugly

更新
:存在一个重复的问题,即如何在Python中断开一系列链接方法?。该接受的答案建议开始以点每个新线的熟悉从jQuery的风格。作者没有提供任何理由或权威参考,因此,我想对这种风格或替代方法进行确认。


问题答案:

在这种情况下,最好使用连续行字符代替括号。

ShortName.objects.distinct() \
         .filter().values()      # looks better

随着方法名称变长以及方法开始采用参数,对这种样式的需求变得更加明显:

return some_collection.get_objects(locator=l5) \
                      .get_distinct(case_insensitive=True) \
                      .filter(predicate=query(q5)) \
                      .values()

PEP 8旨在以一种常识的方式进行解释,并兼顾实用性和美观性。很高兴违反任何导致难看或难以阅读代码的PEP 8准则。

话虽如此,如果您经常发现自己与PEP 8不符,则可能表明存在可读性问题超出了对空白的选择:-)



 类似资料:
  • 问题内容: (不要与itertools.chain混淆) 我正在阅读以下内容:http : //en.wikipedia.org/wiki/Method_chaining 我的问题是: 在python中实现方法链接的最佳方法 是 什么? 这是我的尝试: 一个问题是调用是否修改但不返回。(那么我应该退货还是退货)。 有没有人有更好的实现链接的方法?可能有很多方法可以做到这一点。 我是否应该假设某个方

  • 使用ByteBuddy,我可以通过调用另一个实例方法并转换结果来实现一个实例方法吗? 例如(玩具): 鉴于上述情况,我能否实现,以便它调用并返回返回字符串的长度?也就是说,好像它是: 我天真地尝试了以下方法: 然而,看起来我的想法是错误的,;它看起来像是在生成的实例上调用的。 我还试过一个拦截器: 与: 这运行了,但产生了毫无意义的结果,在中设置断点和/或添加打印语句表明它永远不会被调用;所以很明

  • 问题内容: 我在这里超负荷工作,但是请耐心等待这位Python业余爱好者。我是一名从事贸易的PHP开发人员,以前几乎没有接触过这种语言。 我想做的是在类中调用方法…听起来很简单?对于“自我”是什么,以及在类内和类外调用这种方法的正确过程,我完全感到困惑。 有人 可以 向我 解释 如何用变量调用方法。我曾尝试在多个“学习python”站点上进行研究,并在StackOverflow上进行搜索,但无济于

  • 问题内容: 我正在使用dict.get(’keyword’)方法查询嵌套字典。目前我的语法是… 但是,有时“父”或“子”标签之一不存在,并且我的脚本失败。我知道使用我可以在表单的键不存在的情况下包括默认值… 但是,如果我有任何,或清空我能想到的,在链接上调用时失败,因为没有方法。 我现在解决这个问题的方法是在每个调用周围使用一连串的顺序,但这似乎是愚蠢的,而且是非Python的- 是否有一种方法可

  • 现在,返回另一个的方法,如上面MWE中的,返回另一个,这很好。但是,我还希望欺骗链接方法,如或在最后生成一个。到目前为止,我失败了,因为和类似的类型是,而我的包装器试图从它们的输出中构造,而不“等待”或表达式的任何其他最后部分。有什么想法可以解决这个问题吗? 谢了。

  • 我正在尝试取消缩放/取消合并我的CSS样式。我有一个style.css文件,里面有很多合并的样式,比如: 我试图把它转换成的是: 我如何取消合并缩小的css样式以获得这样的输出?我已经尝试了几个CSS美化器和缩小器,但它们并不完全是我所需要的。 UPD:这里是解决方案:codeBeautifier.com。要获得与上面示例相同的输出,请打开此页面,找到,将其设置为,粘贴您的CSS,然后点击