2017-01-01 3 views
2

Стандарт для стандартных классов библиотеки Python, по-видимому, относится к именам классов в нижнем регистре - это, похоже, справедливо для встроенных модулей, таких как str и int, а также для большинства классов, которые являются частью стандартных библиотечных модулей, которые должны быть импортированы таким образом как datetime.date или datetime.datetime.Каков стандарт капитализации для имен классов в стандартной библиотеке Python?

Но некоторые стандартные классы библиотек, такие как enum.Enum и decimal.Decimal, капитализируются. На первый взгляд может показаться, что классы капитализируются, когда их имя равно имени модуля, но это не выполняется во всех случаях (например, datetime.datetime).

В чем обоснование/логика соглашений о заглавной буквы для имен классов в стандартной библиотеке Python?

+0

@VVK, я обновил ответ с более подробной информацией, пожалуйста, дайте мне знать, если это поможет. Если это хорошо, пожалуйста, удалите отрицательный голос. Thanks –

ответ

0

Pep 8 считается стандартным руководством по дизайну многих разработчиков Python. Это рекомендует назвать классы, используя CamelCase/CapWords.

Соглашение об именах для функций может использоваться в тех случаях, когда интерфейс документирован и используется в основном как вызываемый.

Обратите внимание, что для встроенных имен существует отдельное соглашение: большинство встроенных имен - это одиночные слова (или два слова, выполняемые вместе), причем соглашение CapWords используется только для имен исключений и встроенных констант.

Отметьте это link для соглашений и стандартов именования PEP8.

дата и время является частью стандартной библиотеки,

стандартной библиотека Python является очень обширна, предлагая широкий спектр услуг, как указано в долгосрочном оглавлении, перечисленное ниже. Библиотека содержит встроенные модули (написанные на C), которые обеспечивают доступ к системным функциям, таким как файловый ввод-вывод, которые в противном случае были бы недоступны для программистов на Python, а также модули, написанные на Python, которые предоставляют стандартизированные решения для многих проблем, которые происходят в повседневном программировании.

В некоторых случаях, таких как sklearn, nltk, django, имена пакетов все строчные. Этот link доставит вас туда.

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

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

Я надеюсь, что это охватывает все вопросы.

+0

Получил это, поэтому имена классов CamelCased в стандартной библиотеке являются лишь реликтом устаревших соглашений. Благодарю. Я знаком со стандартными соглашениями об именах ... просто не был уверен, было ли какое-то другое правило для стандартной библиотеки, которую я отсутствовал. – VKK

+1

PEP8 по-прежнему рекомендует кейс для верблюдов для имен классов. Однако большинство основных стандартных имен классов библиотек имеют имена нижних регистров. – thet

+0

Ваши заявления не содержат воды. Откуда вы получаете эту информацию? PEP8, как вы говорите, указывает на противоположное: «[Имена классов должны обычно использовать соглашение CapWords.] (Https://www.python.org/dev/peps/pep-0008/#class-names)« Они просто используют разное соглашение для объединителей (без реальной причины). «Обратите внимание, что для встроенных имен существует отдельное соглашение: большинство встроенных имен - это одиночные слова (или два слова, выполняемые вместе), причем соглашение CapWords используется только для имен исключений и встроенных констант». –

2

Раздел руководства разработчиков содержит PEP 8 в качестве руководства по стилю.


От PEP 8 Условные обозначения, акцент мой.

называния конвенция библиотеки Пайтона немного беспорядка, так мы никогда не получить это полностью соответствуют - тем не менее, здесь в рекомендуемых в настоящее время называющих стандартов. Новые модули и пакеты (включая рамки третьих лиц) должны быть написаны по этим стандартам, но там, где существующая библиотека имеет другой стиль, внутренней согласованности является предпочтительным.


Also from PEP 8

Руководство по стилю о непротиворечивости. Важное значение имеет согласованность с этим руководством по стилю . Согласованность в рамках проекта более важна. Согласованность в рамках одного модуля или функции является наиболее важной. ...

Некоторые другие веские причины, чтобы игнорировать конкретный ориентир:

  • быть последовательным с окружающими код, который также разрушает его (возможно, по историческим причинам) - хотя это также возможность очистки до чужих беспорядков (в истинном стиле XP).
  • Поскольку код предшествует введению директивы, и нет никакой другой причины изменять этот код.

Вы, наверное, никогда не будете знать, почему стандартная библиотека именования конвенций конфликта с PEP 8, но это, вероятно, хорошая идея, чтобы следовать за новый материал или даже в своих собственных проектах.