Python 如何直观地将类方法分组到节中?

Python 如何直观地将类方法分组到节中?,python,Python,在组织代码时,我有点迂腐,所以我尝试了一些方法,将我的类方法可视化地分组到逻辑部分/节中。我的问题是,在Python编辑器中,是否有任何更好的方法可以直观地分隔类方法组?。PEP8没有提到这一非问题,因此我不确定如何“正确”做到这一点 我猜这个愿望来自我的Xcode使用,我会添加#pragma mark-XY来分隔方法部分。我正在为Python使用升华文本,是否有支持某种分组风格的编辑器或IDE 因此,我目前使用的一个分组示例是,在逻辑上相似的方法中,每个方法下一个,但在“组”之间添加更多的空格

在组织代码时,我有点迂腐,所以我尝试了一些方法,将我的类方法可视化地分组到逻辑部分/节中。我的问题是,在Python编辑器中,是否有任何更好的方法可以直观地分隔类方法组?。PEP8没有提到这一非问题,因此我不确定如何“正确”做到这一点

我猜这个愿望来自我的Xcode使用,我会添加
#pragma mark-XY
来分隔方法部分。我正在为Python使用升华文本,是否有支持某种分组风格的编辑器或IDE

因此,我目前使用的一个分组示例是,在逻辑上相似的方法中,每个方法下一个,但在“组”之间添加更多的空格和水平线(直到到达80个字符的边框),如下所示:

class Foo (object):
    def __init__(self)
    
    # ------------------------- Properties
    @property
    def foo(self)
    @property
    def bar(self)
    
    # ------------------------- Querying
    def find(self, id)
    def find_siblings(self)
    def find_related(self, attr)
    
    # ------------------------- Class Methods
    @classmethod
    def setup(cls)
    @classmethod
    def purge_cache(cls)
    
    # ------------------------- Utilities
    def __str__(self)
    def __unicode__(self)
    def __repr__(self)

一种有用的方法是在类本身上使用一个长docstring,对这些方法进行逻辑分组,请参见

在这种情况下,您可以执行以下操作:

class MyClass():
   """
   This class provides a number of methods grouped accordingly:
      Methods to do with a:
       - a_do_something - Quick Summary
       - a_do_something_else - Quick Summary
      Methods to do with b:
       - b_do_something - Quick Summary
       - b_do_something_else - Quick Summary
   """
   def __init__(self):
       """ Initialise MyClass """
       pass  # More likely some code

   if True:  # Allow group folding for Functional Group A
   ## 
   ## The following functions and class methods are to do with a:
   ## 
       def a_do_something(params):
          """ Quick Summary

          Parameters:
              Describe Each
          Returns:
              What

          Long description text.
          """
          pass # really the code for this function
等等


然而,您可能希望考虑任何长度足够长的代码,以将其需要更多的类并按这样的方式分组。

我不确定从该文档中可以看到如何将其实现到我的类文件中,这似乎暗示了如何最好地为整个类编写文档串,最重要的是?确切地说-这是最佳实践-您还可以在每个方法docstring中添加更多细节,但是在类docstring中对您的类方法进行了分组,然后在实际的类实现中将它们简单地分组在相同的组中。啊,我明白了。这当然有助于文档编制,我更希望在Python编辑器中使用更常用的方法来直观地分隔组。这不是一种经批准的方法,但我看到一种成功使用的方法是在每个组开始时使用“if True:##group Description*****”。缺点是您现在被另一个级别缩进,但优点是如果您使用支持代码折叠的编辑器,那么您可以折叠组。当然,最好的想法可能是,如果你的代码变得足够大,需要这样的结构,那么也许是时候对整个事情进行重构/细分了。如果是真的,
if
确实是一个很好的技巧!关于重组,它还不是很大,只有几百行,但你是对的,在Objective-C中,我会在某一点上开始使用类类别。