Соглашения об именах Python для модулей

У меня есть модуль, целью которого является определение класса "nib". (и несколько связанных классов тоже.) Как я могу назвать сам модуль? "СИБ"? "Nibmodule"? Что-нибудь еще?

Ответ 1

Просто кив. Назовите класс Nib с капиталом N. Дополнительные сведения о соглашениях об именах и других советах по стилю см. В PEP 8, руководство по стилю Python.

Ответ 2

Я бы назвал его nib.py. И я бы также назвал класс Nib.

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

from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs

Это немного похоже на эмуляцию Java-способа. Один класс для каждого файла. Но с добавленной гибкостью вы всегда можете добавить еще один класс в один файл, если это имеет смысл.

Ответ 3

Я знаю, что мое решение не очень популярно с точки зрения pythonic, но я предпочитаю использовать подход Java одного модуля → один класс с модулем, называемым классом. Я понимаю причину стиля python, но я не слишком люблю иметь очень большой файл, содержащий много классов. Мне трудно просматривать, несмотря на складывание.

Другая причина - контроль версий: наличие большого файла означает, что ваши фиксации имеют тенденцию концентрироваться на этом файле. Это может потенциально привести к большему количеству конфликтов, которые будут разрешены. Вы также теряете дополнительную информацию о журнале, которую ваша фиксация модифицирует определенные файлы (поэтому включает определенные классы). Вместо этого вы видите модификацию файла модуля, и только комментарий коммита должен понять, какая модификация была выполнена.

Подводя итоги, если вы предпочитаете философию python, пойдите для предложений других сообщений. Если вы предпочитаете java-подобную философию, создайте Nib.py, содержащий класс Nib.

Ответ 4

nib отлично. Если есть сомнения, обратитесь к руководству по стилю Python.

От PEP 8:

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

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

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

Ответ 5

С PEP-8: имена пакетов и модулей:

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

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

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

Ответ 6

foo модуль в python будет эквивалентен файлу класса Foo в Java

или

foobar модуль в python будет эквивалентен файлу класса FooBar в Java