Ассоциация между именованием классов и именованием их файлов в python (соглашение?) - PullRequest
52 голосов
/ 12 мая 2011

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

class FooBar:
    ...

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

from foobar import FooBar

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

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

Ответы [ 2 ]

52 голосов
/ 12 мая 2011

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

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

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

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

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

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

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

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


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

from configparser import ConfigParser

(кстати, это был ConfigParser в Python 2.x, но в 3.x он стал строчным).

11 голосов
/ 12 мая 2011

PEP 8 говорит:

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

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

...