2013-07-15 29 views
1

當談到組織我的代碼時,我有點迂腐,所以我試圖想出方法將我的類方法直觀地分組爲邏輯部分/部分。我的問題是,是否有任何更好的方法在Python編輯器中直觀地區分類方法組 ?. PEP8沒有提到這個非問題,所以我不知道如何「正確」做到這一點。Python:如何在視覺上將類方法劃分爲多個部分

我想這個願望來自我的Xcode使用,我將添加#pragma mark - XY來分隔方法部分。我爲Python使用Sublime Text,是否有支持某種分組風格的編輯器或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) 

回答

1

一個有用的方法是使用類本身很長的文檔字符串進行邏輯分組的方法,請參閱PEP 258

在這種情況下,你會做這樣的事情:

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 

但是,您可能希望考慮打破任何足夠長的代碼,以便將其用於更多類並以這種方式分組。

+0

我不確定從該文檔中看到如何將它實現到我的類文件中,這似乎表明如何最好地爲整個類編寫文檔,在其頂部? – Pascal

+0

準確地說 - 這是最佳實踐 - 您還在每個方法docstring中添加更多詳細信息,但已將類方法分組到類docstring中,然後在實際的類實現中將它們分組到相同的組中。 –

+0

啊我明白了。這當然有助於文檔,我更多地要求更常用的方法來在Python編輯器中直觀地分隔組。 – Pascal