Как документировать и использовать перечисляющие типы данных в Python? - PullRequest
5 голосов
/ 23 сентября 2011

Предположим, что текущий код использует строки для параметров, и вы хотите задокументировать их действительные значения.

Пример

def MyFunc(region = None):
    if region in ['A','B','C', None]:
        # dosomething
    else:
        # complain about invalid parameter

Теперь вопрос в том, как я могу улучшить этот дизайн, чтобы решить две проблемы:

  • возможность использовать функцию автозаполнения в IDE для автоматического заполнения возможных значений параметра.

  • документирует список допустимых значений параметра (в настоящее время код документируется с использованием doxygen)

Ответы [ 2 ]

4 голосов
/ 23 сентября 2011

Вот похожий вопрос: Как я могу представить Enum в Python?

Он предлагает реализовать что-то вроде:

class MyClass :
    A = 0   """The Letter A"""
    B = 1   """The Letter B"""
    C = 2   """The Letter C"""
    D = 3   """The Letter D"""

variable = MyClass.A    # Ok
variable = MyClass.E    # Error

С этим вы также получаете автозаполнение IDE. (Который вопреки мнению С.Лотта, я все время использую ... я думаю, что это старая привычка Java).

Считается плохим стилем использовать строку документации для повторения очевидного, и я думаю, что в этом случае ухудшается читаемость кода. Для получения дополнительной информации о строках документов:

http://www.python.org/dev/peps/pep-0257/

Если вам интересно, почему в Python нет типа enum, вы можете проверить PEP:

http://www.python.org/dev/peps/pep-0354/

1 голос
/ 18 сентября 2016

Перечисления поддерживаются с 3.4: https://docs.python.org/3.4/library/enum.html

...