Соглашения об именах Python для модулей - PullRequest
92 голосов
/ 03 апреля 2009

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

Ответы [ 5 ]

103 голосов
/ 03 апреля 2009

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

40 голосов
/ 03 апреля 2009

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

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

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

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

27 голосов
/ 03 апреля 2009

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

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

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

21 голосов
/ 03 апреля 2009

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

С PEP 8 :

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

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

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

0 голосов
/ 06 сентября 2015
Модуль

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

или

Модуль

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

...