Ho un modulo il cui scopo è definire una classe chiamata "pennino". (e anche alcune classi correlate). Come dovrei chiamare il modulo stesso? "pennino"? "Nibmodule"? Qualunque altra cosa?
Ho un modulo il cui scopo è definire una classe chiamata "pennino". (e anche alcune classi correlate). Come dovrei chiamare il modulo stesso? "pennino"? "Nibmodule"? Qualunque altra cosa?
Risposte:
Basta pennino. Assegna un nome alla classe Nib, con la N maiuscola. Per ulteriori informazioni sulle convenzioni di denominazione e altri consigli di stile, vedi PEP 8 , la guida allo stile di Python.
Client
e, comprensibilmente, spesso ne creo istanze che voglio chiamare client
. Ma secondo la tua convenzione, il nome del modulo sarebbe client
, quindi dovrei sempre nominare le mie istanze in modo innaturale client_instance
. Cosa ne pensi di questo problema?
Client
, quindi sarebbe in conflitto con il nome della classe Client
. Poiché ci sono solo tre possibili varianti di denominazione ( client
, Client
o CLIENT
) ci sarà sempre uno scontro tra due istanze, classi, moduli o costanti. Credo che ci siano meno volte in cui nomini il tuo modulo come un'istanza o una costante rispetto alla classe, e quindi è la migliore convenzione di denominazione delle altre possibilità. Renderà anche più leggibile l'importazione dai moduli poiché generalmente importi classi e costanti piuttosto che variabili.
Lo chiamerei nib.py. E vorrei anche chiamare la classe Pennino.
In un progetto python più ampio su cui sto lavorando, abbiamo molti moduli che definiscono fondamentalmente una classe importante. Le classi sono denominate che iniziano con una lettera maiuscola. I moduli sono denominati come la classe in minuscolo. Questo porta a importazioni come le seguenti:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
È un po 'come emulare il modo Java. Una classe per file. Ma con la flessibilità aggiunta, puoi sempre aggiungere un'altra classe a un singolo file se ha senso.
So che la mia soluzione non è molto popolare dal punto di vista pitonico, ma preferisco usare l'approccio Java di un modulo-> una classe, con il modulo chiamato come classe. Capisco il motivo dietro lo stile python, ma non mi piace avere un file molto grande contenente molte classi. Trovo difficile navigare, nonostante la piegatura.
Un altro motivo è il controllo della versione: avere un file di grandi dimensioni significa che i tuoi commit tendono a concentrarsi su quel file. Questo può potenzialmente portare a una maggiore quantità di conflitti da risolvere. Perdi anche le informazioni di registro aggiuntive che il tuo commit modifica file specifici (quindi coinvolgendo classi specifiche). Invece vedi una modifica al file del modulo, con solo il commento di commit per capire quale modifica è stata fatta.
Riassumendo, se preferisci la filosofia python, vai per i suggerimenti degli altri post. Se invece preferisci la filosofia java-like, crea un Nib.py contenente la classe Nib.
spyder
o un editor simile per visualizzare un riepilogo delle classi per facilitare la navigazione e due riquadri con lo stesso file aperti su entrambi. Inoltre, leggi PEP8. Python è per scrivere Python e Java per Java, ma Python non è per scrivere Java.
il pennino va bene. In caso di dubbio, fare riferimento alla guida allo stile di Python.
Da PEP 8 :
Nomi di pacchetti e moduli I moduli dovrebbero avere nomi brevi, tutti minuscoli. È possibile utilizzare trattini di sottolineatura nel nome del modulo se migliora la leggibilità. I pacchetti Python dovrebbero anche avere nomi brevi, tutti minuscoli, sebbene sia sconsigliato l'uso di trattini bassi.
Poiché i nomi dei moduli sono mappati ai nomi dei file, e alcuni file system non fanno distinzione tra maiuscole e minuscole e troncano i nomi lunghi, è importante che i nomi dei moduli siano scelti in modo abbastanza brevi - questo non sarà un problema su Unix, ma potrebbe essere un problema quando il codice viene trasportato su versioni precedenti di Mac o Windows o DOS.
Quando un modulo di estensione scritto in C o C ++ ha un modulo Python di accompagnamento che fornisce un'interfaccia di livello superiore (ad esempio più orientata agli oggetti), il modulo C / C ++ ha un trattino basso iniziale (ad esempio _socket).
Da PEP-8: Nomi di pacchetti e moduli :
I moduli dovrebbero avere nomi brevi, tutti minuscoli. È possibile utilizzare trattini di sottolineatura nel nome del modulo se migliora la leggibilità.
I pacchetti Python dovrebbero anche avere nomi brevi, tutti minuscoli, sebbene sia sconsigliato l'uso di trattini bassi.
Quando un modulo di estensione scritto in C o C ++ ha un modulo Python di accompagnamento che fornisce un'interfaccia di livello superiore (ad esempio più orientata agli oggetti), il modulo C / C ++ ha un trattino basso iniziale (ad esempio _socket).
Il modulo foo in python sarebbe l'equivalente di un file di classe Foo in Java
o
Il modulo foobar in python sarebbe l'equivalente di un file di classe FooBar in Java