У меня есть модуль, цель которого - определить класс под названием «перо». (и еще несколько связанных классов). Как мне вызвать сам модуль? "перо"? "нибмодуль"? Что-нибудь еще?
python
naming-conventions
Рам Рахум
источник
источник
Client
, и, понятно, я часто делаю его экземпляры, которые хочу вызватьclient
. Но в соответствии с вашим соглашением имя модуля будет такимclient
, поэтому мне всегда приходилось называть свои экземпляры чем-то неестественным, напримерclient_instance
. Что вы думаете об этой проблеме?Client
, тогда он будет конфликтовать с именем классаClient
. Поскольку существует только 3 возможных варианта наименования (client
,Client
илиCLIENT
), всегда будет конфликт между двумя экземплярами, классами, модулями или константами. Я считаю, что меньше раз вы называете свой модуль так же, как экземпляр или константа, чем класс, и, следовательно, это лучшее соглашение об именах из других возможностей. Это также сделает импорт из модулей более читабельным, поскольку вы обычно импортируете классы и константы, а не переменные.Я бы назвал это nib.py. И я бы также назвал класс Nib.
В более крупном проекте Python, над которым я работаю, у нас есть множество модулей, определяющих в основном один важный класс. Названия классов начинаются с заглавной буквы. Модули названы так же, как и класс в нижнем регистре. Это приводит к следующему импорту:
Это немного похоже на подражание Java. Один класс на файл. Но с дополнительной гибкостью, вы всегда можете добавить еще один класс в один файл, если это имеет смысл.
источник
Я знаю, что мое решение не очень популярно с питонической точки зрения, но я предпочитаю использовать подход Java: один модуль-> один класс с модулем, названным как класс. Я понимаю причину стиля python, но мне не очень нравится иметь очень большой файл, содержащий множество классов. Мне сложно просматривать, несмотря на складывание.
Другая причина - это контроль версий: наличие большого файла означает, что ваши коммиты, как правило, сосредоточены на этом файле. Это потенциально может привести к большему количеству разрешаемых конфликтов. Вы также теряете дополнительную информацию журнала, что ваша фиксация изменяет определенные файлы (следовательно, включает определенные классы). Вместо этого вы видите модификацию файла модуля, только с комментарием фиксации, чтобы понять, какая модификация была сделана.
Подводя итог, если вы предпочитаете философию Python, ознакомьтесь с предложениями других сообщений. Если вы предпочитаете философию, подобную java, создайте Nib.py, содержащий класс Nib.
источник
spyder
или аналогичный редактор, чтобы просмотреть сводку по классам, чтобы облегчить навигацию, и две панели с одним и тем же файлом, открытыми на обеих. Также прочтите PEP8. Python предназначен для написания Python, а Java для Java, но Python не для написания Java.перо в порядке. Если есть сомнения, обратитесь к руководству по стилю Python.
Из PEP 8 :
источник
Из PEP-8: Имена пакетов и модулей :
источник
Модуль foo в Python будет эквивалентом файла класса Foo в Java
или
Модуль foobar в Python будет эквивалентом файла класса FooBar в Java.
источник