Skip to main content
 首页 » 编程设计

Python,压缩在缩进级别和 PEP-8 宽度限制之间

2025年05月04日29Free-Thinker

我已经写了一个很长很简洁的 Python 类:

class Foo(object):                     |    | 
      """It is long and it has to deal |    | 
      with PEP8 code width requirements|    | 
      which are 72 characters for      |    | 
      comments and docstrings and 79   |    | 
      for actual code.                 |    | 
      """                              |    | 
      class_parm = 12                  |    | 
      pass # after several long, broken down| 
           # into several pieces, but in the| 
           # end *fit* lines of script, phew| 
                                            ^ 
                                           79 characters (say) 
                                       ^     
                                      72 characters (say) 

现在,事实证明我需要动态创建这个大类,以便它的一些静态成员在它的一个实例与另一个实例之间是不同的。 简而言之,我需要把它变成类似这样的东西:

def make_foo(parm):                    
    class Foo(object):                 |    | 
          """It is long and it has to d|al  |     
          with PEP8 code width requirem|nts |     
          which are 72 characters for  |    |     
          comments and docstrings and 7|    |     
          for actual code.             |    |     
          """                          |    |     
          class_parm = parm            |    |     
          pass # after several long, broken |own 
               # into several pieces, but in|the 
               # end *fit* lines of script, |hew 
    return Foo                              | 
                                            ^ 
                                           79 characters (say) 
                                       ^     
                                      72 characters (say) 

因此它会破坏 PEP-8 协议(protocol)。我仍然可以通过审查中的所有内容并将行分解成更多部分,以便它仍然适合。但这很乏味,我觉得这是我不应该担心的事情,因为它与我实际的编码事件没什么可看的。

我该怎么办?有没有办法在不需要添加另一层缩进的情况下实现这一目标?喜欢使用装饰器?或者是否有神奇的替代方法来分隔 python block ?可能是特殊字符?

我愿意编写符合标准的 和 易于编辑的 *.py 文件,但有时这是一个令人费解的目标:\

请您参考如下方法:

您可以使用继承:

class Foo(object):  
    """It is long and it has to deal 
    with PEP8 code width requirements 
    which are 72 characters for 
    comments and docstrings and 79 
    for actual code.  
    """                          
    class_parm = 12 
    pass # after several long, broken down| 
       # into several pieces, but in the| 
       # end *fit* lines of script, phew| 
 
 
def make_foo(parm):                    
    class Foo2(Foo): 
        """Foo without indentation problems.""" 
        class_parm = parm 
    return Foo2 

子类不应该有缩进问题,因为它很小。