2013-06-04 3 views
7

Я пишу набор функций python, которые выполняют некоторую проверку соответствия в проекте исходного кода. Я хотел бы указать довольно многословные имена для этих функций, например: check_5_theVersionOfAllVPropsMatchesTheVersionOfTheAutolinkHeader()Какова максимальная длина имени атрибута в python?

Могут ли такие чрезмерно длинные имена быть проблемой для python? Существует ли максимальная длина имен атрибутов?

+4

Пожалуйста, не делайте этого. Длинные имена не всегда плохие, но они запах кода. В этом случае я бы сократил имя и поместил более подробное описание в строку doc. Кроме того, я бы либо занесенный в список результатов, либо бросил явно написанное исключение, объяснив неудачную проверку. –

ответ

25

2.3. Identifiers and keywords из питона Language Reference:

Идентификаторы неограниченны в длину.


Но вы будете нарушать PEP-8, скорее всего, что не очень здорово:

Предельное все линии до максимум 79 символов.

Также вы будете нарушать PEP-20 (Дзен Python):

читаемость рассчитывает.

+0

хорошо спасибо, но для части читаемости я не могу этого рассчитать: именно этого я и пытаюсь достичь. Имя функции сообщает вам, что она делает. Если я сокращу его, он станет менее читаемым. (примет ваш ответ за 8 минут) –

+4

@AlexanderTobiasHeinrich Ваш код будет _absolutely нечитаемым_. Используйте [docstrings] (http://www.python.org/dev/peps/pep-0257/). – kirelagin

+3

«Полностью описательный» и «читаемый» - это две разные вещи. Длинные, длинные веревки с верблюжьей шкурой - это первые, а не последние. – chepner

4

Они могут быть проблемой для программиста. Храните имена функций достаточно короткими и используйте докстры для их документирования.

1

Поскольку имена атрибутов только что хэшируются и включаются в клавиши на inst.__dict__ для 99% классов, с которыми вы когда-либо столкнетесь, нет реального предела по длине. Пока он хешируется, он будет работать как имя атрибута. Для остальных 1% классов, которые играют с __setattr__ \ __getattr__ \ __getattribute__ способами, которые нарушают гарантию того, что что-либо hashable является допустимым именем атрибута, хотя предыдущее не применяется.

Конечно, как указывали другие, у вас будут проблемы с качеством кода и качеством с более длинными именованными атрибутами. Если вам кажется, что вам нужны такие длинные имена, это, скорее всего, указывает на недостаток дизайна в вашей программе, и вам следует, вероятно, взглянуть на то, чтобы ваши данные были более иерархичной структурой и лучше абстрагироваться и делить ответственность на ваши функции и методы.

+0

Вы действительно думаете, что имена интерпретаторов хеширования интерпретируются при каждом вызове? – kirelagin

+0

Было бы более продуктивным, если бы сформулированный «интерпретатор не использовал имена метода хеширования при каждом вызове, см. ...' – hexparrot

+0

Если вы не используете JIT или другой тип оптимизирующего или перспективного интерпретатора (насколько мне известно, CPython не является) да. –

Смежные вопросы