【问题标题】:How can i break up this line to meet PEP8 requirements?我怎样才能打破这条线以满足 PEP8 的要求?
【发布时间】:2018-01-02 16:19:50
【问题描述】:

我在“类别”属性的 PEP8 在线检查器中收到“行太长错误”。我的一段代码如图所示:

class A:
    __tablename__ = 'items'

    category = relationship(Category, backref=backref('items', cascade='all, delete'))
    id = Column(Integer, primary_key=True)

【问题讨论】:

    标签: python python-2.7 sqlalchemy pep8 pep


    【解决方案1】:

    Shai 的回答(在第一个 arg 和缩进打开括号后中断)很好,并且适合 PEP8,但如果您怀疑在以后的重构中可能有更多关于关系函数的参数:

    class A:
        __tablename__ = 'items'
    
        category = relationship(
            Category,
            backref=backref('items', cascade='all, delete'),
        )
        id = Column(Integer, primary_key=True)
    

    【讨论】:

    • 你如何确定relationship的参数缩进的“深度”?
    • 如果你在一个左括号((、[、{)上打断,然后缩进一个单位(几乎总是 4 个空格)。如果您在括号内的某处中断,则缩进到括号。
    【解决方案2】:

    怎么样

    class A:
        __tablename__ = 'items'
    
        category = relationship(Category, 
                                backref=backref('items', cascade='all, delete'))
        id = Column(Integer, primary_key=True)
    

    【讨论】:

      【解决方案3】:

      PEP8 说:

      包装长行的首选方法是在括号、方括号和大括号内使用 Python 隐含的行继续。

      Indentation 部分提供了一些关于可能性的示例。具体如何操作取决于您的口味。

      我最喜欢的是:

      # if you need to save lines:
      category = relationship(Category,
                              backref=backref('items', cascade='all, delete'))
      
      # if you need it more structured:
      category = relationship(
          Category, backref=backref('items', cascade='all, delete')
      )
      
      # if you have space and want a good overview:
      category = relationship(
          Category,
          backref=backref('items', cascade='all, delete')
      )
      

      我个人最常使用最后一个选项,因为它在视觉上与代码的嵌套结构相对应。

      【讨论】:

        猜你喜欢
        • 2015-03-13
        • 2019-10-04
        • 2018-09-21
        • 2017-02-10
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多