Відповіді:
Просто гризти. Назвіть клас Nib з великою літерою N. Детальніше про назви конвенцій та інші поради щодо стилів див. У PEP 8 , посібнику зі стилю Python.
Client
, і, зрозуміло, я часто роблю його екземпляри, які я хочу зателефонувати client
. Але згідно з вашою умовою, назва модуля була б client
, і тому я завжди повинен був би називати свої екземпляри чимось неприродним, як client_instance
. Що ви думаєте про цю проблему?
Client
, тоді воно зіткнеться з назвою класу Client
. Оскільки існує тільки 3 можна називати варіанти ( client
, Client
або CLIENT
) завжди буде зіткнення двох примірників, класів, модулів або констант. Я вважаю, що ви рідше називаєте свій модуль тим самим, як екземпляр або константа, ніж клас, і тому краще узгодження імен інших можливостей. Це також зробить імпорт з модулів більш читабельним, оскільки ви, як правило, імпортуєте класи та константи, а не змінні.
Я б назвав це nib.py. І я б також назвав клас Nib.
У більшому проекті пітона, над яким я працюю, ми маємо безліч модулів, що визначають в основному один важливий клас. Класи названі, починаючи з великої літери. Модулі названі як клас у нижньому регістрі. Це призводить до імпорту на зразок наступного:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
Це трохи схоже на емуляцію способу Java. Один клас на файл. Але, маючи додаткову гнучкість, ви завжди можете додати ще один клас до одного файлу, якщо це має сенс.
Я знаю, що моє рішення не дуже популярне з пітонічної точки зору, але я вважаю за краще використовувати підхід Java до одного модуля-> одного класу, причому модуль названий класом. Я розумію причину стилю python, але мені не дуже подобається мати дуже великий файл, що містить багато класів. Мені важко переглядати, незважаючи на складання.
Ще одна причина - контроль над версіями: наявність великого файлу означає, що ваші зобов'язання зосереджуються на цьому файлі. Це може призвести до вирішення більшої кількості конфліктів. Ви також втрачаєте додаткову інформацію журналу, що ваш комітет модифікує конкретні файли (тому включаючи конкретні класи). Натомість ви бачите модифікацію файлу модуля, лише зазначаючи коментар, щоб зрозуміти, яку модифікацію було зроблено.
Підводячи підсумки, якщо ви віддаєте перевагу філософії пітона, перейдіть до пропозицій інших постів. Якщо ви віддаєте перевагу філософії, схожі на java, створіть Nib.py, що містить клас Nib.
spyder
чи подібний редактор, щоб переглянути підсумки своїх класів, щоб допомогти навігації, і дві області з тим самим файлом відкриті на обох. Також прочитайте PEP8. Python призначений для написання Python, а Java для Java, але Python не для написання Java.
перо добре. Якщо ви сумніваєтесь, зверніться до посібника зі стилю Python.
Від PEP 8 :
Імена пакетів та модулів Модулі повинні мати короткі, малі імена. Підкреслення можна використовувати у назві модуля, якщо це покращує читабельність. Пакети Python також повинні мати короткі, малі імена, хоча використання підкреслення не рекомендується.
Оскільки назви модулів відображаються на імена файлів, а деякі файлові системи нечутливі до регістру і обрізають довгі імена, важливо, щоб назви модулів були обрані досить короткими - це не буде проблемою для Unix, але це може бути проблема при перенесенні коду до старих версій Mac або Windows або DOS.
Коли модуль розширення, написаний на C або C ++, має супровідний модуль Python, що забезпечує інтерфейс більш високого рівня (наприклад, більш орієнтований на об'єкт), модуль C / C ++ має провідне підкреслення (наприклад, _socket).
Від PEP-8: Назви пакетів та модулів :
Модулі повинні мати короткі, малі імена. Підкреслення можна використовувати у назві модуля, якщо це покращує читабельність.
Пакети Python також повинні мати короткі, малі імена, хоча використання підкреслення не рекомендується.
Коли модуль розширення, написаний на C або C ++, має супровідний модуль Python, що забезпечує інтерфейс більш високого рівня (наприклад, більш орієнтований на об'єкт), модуль C / C ++ має провідне підкреслення (наприклад, _socket).
модуль foo в python був би еквівалентний Foo файлу класу на Java
або
модуль foobar в python був би еквівалентний файлу класу FooBar на Java