Подтвердить что ты не робот

Ассоциация между классами именования и их имена в python (соглашение?)

В python (и некоторых других языках) я узнал, что имя класса должно быть написано маленькими буквами, за исключением первой буквы, которая должна быть заглавной. Пример:

class FooBar:
    ...

Класс должен идти в файле с именем, аналогичным классу. В этом примере это будет файл foobar.py. Если я хочу импортировать класс foo, то я должен это сделать:

from foobar import FooBar

Это соглашение немного смущает меня. Моя интуиция подсказывает мне, что если имя файла указывает класс, то оно также должно быть написано с первой буквой в столицах, например, foobar.py. Это не выглядит красиво в именах файлов. Возможно, кто-то может сказать мне, что является стандартной конвенцией для этого?

Надеюсь, я поставил свой вопрос понятным.: -)

4b9b3361

Ответ 1

То, что вы представили, является стандартным соглашением.

Имена пакетов и модулей

Модули должны иметь короткие, все строчные имена. Подчеркивания могут использоваться в имени модуля, если он улучшает читаемость. Пакеты Python также должны иметь короткие имена с прописными буквами, хотя использование символов подчеркивания не рекомендуется.

Поскольку имена модулей сопоставляются с именами файлов, а некоторые файловые системы нечувствительность к регистру и усечение длинных имен, важно, чтобы модуль имена будут выбраны достаточно короткими - это не будет проблемой для Unix, но это может быть проблемой, когда код переносится на старый Mac или Версии Windows или DOS.

Когда модуль расширения, написанный на C или С++, имеет сопутствующий Python модуль, который обеспечивает более высокий уровень (например, более объектно-ориентированный) интерфейс, модуль C/С++ имеет ведущее подчеркивание (например, _socket).

Имена классов

Почти без исключения имена классов используют соглашение CapWords.       Классы для внутреннего использования также имеют лидирующий символ подчеркивания.

(Руководство по стилю Python)


См., например,

from configparser import ConfigParser

(который, кстати, был ConfigParser в Python 2.x, но был заменен на нижний регистр в 3.x).

Ответ 2

PEP 8 говорит:

Модули должны иметь короткие, все строчные имена. Подчеркивания могут использоваться в имени модуля, если он улучшает читаемость. Пакеты Python должны также имеют короткие имена с прописными буквами, хотя использование символов подчеркивания не рекомендуется.

Также я хочу отметить, что необязательно иметь только один класс для каждого файла. Скорее, вы должны включить связанные классы вместе в один и тот же файл. (Конечно, в некоторых случаях работа с одним классом в файле работает, но это не всегда так)