Имам модул, чиято цел е да дефинира клас, наречен "nib". (и също няколко свързани класа.) Как трябва да извикам самия модул? "писец"? "nibmodule"? Нещо друго?
Конвенции за именуване на Python за модули
Отговори (5)
Просто набийте. Наименувайте класа Nib с главно N. За повече относно конвенциите за именуване и други стилови съвети вижте PEP 8, стиловото ръководство на Python.
Client
, и разбираемо често правя негови екземпляри, които искам да извикам client
. Но според вашата конвенция името на модула ще бъде client
и така винаги ще трябва да назовавам своите екземпляри нещо неестествено като client_instance
. Какво мислите за този проблем?
- person Ray; 01.06.2016
Client
, тогава той ще се сблъска с името на класа Client
. Тъй като има само 3 възможни варианта на именуване (client
, Client
или CLIENT
), винаги ще има сблъсък между два екземпляра, класове, модули или константи. Вярвам, че има по-малко пъти, когато наименувате вашия модул по същия начин като екземпляр или константа, отколкото класа, и следователно това е по-добрата конвенция за именуване от другите възможности. Освен това ще направи импортирането от модули по-четливо, тъй като обикновено импортирате класове и константи, а не променливи.
- person Ted Klein Bergman; 08.11.2016
Бих го нарекъл nib.py. И аз също бих нарекъл класа Nib.
В по-голям проект на Python, върху който работя, имаме много модули, дефиниращи основно един важен клас. Имената на класовете започват с главна буква. Имената на модулите са като класа с малки букви. Това води до импортиране като следното:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
Това е малко като емулиране на начина на Java. Един клас на файл. Но с добавената гъвкавост винаги можете да добавите друг клас към един файл, ако има смисъл.
Знам, че моето решение не е много популярно от гледна точка на Pythonic, но предпочитам да използвам подхода на Java на един модул->един клас, като модулът е наречен като клас. Разбирам причината зад стила на Python, но не обичам да имам много голям файл, съдържащ много класове. Трудно ми е да разглеждам, въпреки сгъването.
Друга причина е контролът на версиите: наличието на голям файл означава, че вашите ангажименти са склонни да се концентрират върху този файл. Това потенциално може да доведе до по-голямо количество конфликти за разрешаване. Вие също така губите допълнителната информация в журнала, че вашият комит променя конкретни файлове (следователно включващи специфични класове). Вместо това виждате модификация на файла на модула, само с коментара за ангажиране, за да разберете каква модификация е направена.
Обобщавайки, ако предпочитате философията на Python, отидете за предложенията от другите публикации. Ако вместо това предпочитате java-подобната философия, създайте Nib.py, съдържащ клас Nib.
spyder
или подобен редактор, за да видите резюме на вашите класове, за да подпомогнете навигацията, и два панела с един и същи файл, отворени и в двата. Също така, моля, прочетете PEP8. Python е за писане на Python и Java за Java, но Python не е за писане на Java.
- person Ioannis Filippidis; 08.04.2015
писецът е добре. Ако се съмнявате, вижте ръководството за стил на Python.
От PEP 8:
Имена на пакети и модули Модулите трябва да имат кратки имена с малки букви. Долни черти могат да се използват в името на модула, ако това подобрява четливостта. Пакетите на Python също трябва да имат кратки имена с малки букви, въпреки че използването на долни черти не се препоръчва.
Тъй като имената на модулите са съпоставени с имената на файловете и някои файлови системи са нечувствителни към главни и малки букви и съкращават дългите имена, важно е имената на модулите да бъдат избрани да бъдат сравнително кратки -- това няма да е проблем в Unix, но може да е проблем, когато кодът се транспортира към по-стари версии на Mac или Windows или DOS.
Когато модул за разширение, написан на C или C++, има придружаващ Python модул, който осигурява интерфейс от по-високо ниво (напр. по-обектно ориентиран), модулът C/C++ има водеща долна черта (напр. _socket).
От PEP-8: Имена на пакети и модули:
Модулите трябва да имат кратки имена с малки букви. Долни черти могат да се използват в името на модула, ако това подобрява четливостта.
Пакетите на Python също трябва да имат кратки имена с малки букви, въпреки че използването на долни черти не се препоръчва.
Когато модул за разширение, написан на C или C++, има придружаващ Python модул, който осигурява интерфейс от по-високо ниво (напр. по-обектно ориентиран), модулът C/C++ има водеща долна черта (напр. _socket).