Python: как визуально сгруппировать методы класса в разделы
Когда дело доходит до организации моего кода, я немного склонен к педантичности, поэтому я попытался придумать способы визуально сгруппировать мои методы класса в логические части / разделы. Мой вопрос заключается в том, существуют ли какие-либо предпочтительные способы визуального разделения групп методов класса в редакторах Python? PEP8 не упоминает эту проблему, поэтому я не уверен, как это сделать "правильно".
Я предполагаю, что это желание исходит от моего использования XCode, где я бы добавил #pragma mark - XY
разделить разделы метода. Я использую Sublime Text для 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)
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
и т.п.
Однако вы можете захотеть разбить любой код, который будет достаточно длинным, чтобы использовать его, на большее количество классов и группировать вещи таким образом.