Соглашения о присвоении имен Python для модулей

Если вы добавите строку '2019' в конец ваших строк дат, конструктор JavaScript Date проанализирует ее как текущую в этом году. Когда у вас есть куча объектов Date, достаточно просто отсортировать ваши строки и использовать findIndex , чтобы получить первый, который появится в будущем:

const dates = ['21. may', '01. jan', '05. feb', '07. jun', '20. dec'];

const sorted = [...dates].sort((a, b) => new Date(a) - new Date(b));
const soonest = sorted.findIndex(date => new Date(`${date} 2019`) > new Date());

const soonestDates = [...sorted.slice(soonest), ...sorted.slice(0, soonest)];
console.log(soonestDates);  // ["21. may", "07. jun", "20. dec", "01. jan", "05. feb"]

96
задан Ram Rachum 2 April 2009 в 22:31
поделиться

4 ответа

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

109
ответ дан Amir 24 November 2019 в 05:37
поделиться

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

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

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

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

41
ответ дан rincewind 24 November 2019 в 05:37
поделиться

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

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

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

28
ответ дан Stefano Borini 24 November 2019 в 05:37
поделиться

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

От PEP 8:

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

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

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

21
ответ дан thedz 24 November 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: