Tengo un módulo cuyo propósito es definir una clase llamada "nib". (y también algunas clases relacionadas). ¿Cómo debo llamar al módulo en sí? "punta"? "nibmodule"? ¿Algo más?
python
naming-conventions
Ram Rachum
fuente
fuente
Client
y, comprensiblemente, a menudo hago instancias de ella que quiero llamarclient
. Pero de acuerdo con su convención, el nombre del módulo seríaclient
, por lo que siempre tendría que nombrar mis instancias como algo antinaturalclient_instance
. ¿Qué opinas de este problema?Client
, entonces chocaría con el nombre de la claseClient
. Puesto que hay sólo variantes 3 posible de nomenclatura (client
,Client
oCLIENT
) siempre habrá un choque entre dos de instancias, clases, módulos o constantes. Creo que hay menos ocasiones en las que nombra su módulo como una instancia o constante que la clase y, por lo tanto, es la mejor convención de nomenclatura de las otras posibilidades. También hará que la importación de módulos sea más legible, ya que generalmente importa clases y constantes en lugar de variables.Yo lo llamaría nib.py. Y también nombraría la clase Nib.
En un proyecto de Python más grande en el que estoy trabajando, tenemos muchos módulos que definen básicamente una clase importante. Las clases se nombran comenzando con una letra mayúscula. Los módulos se denominan como la clase en minúsculas. Esto conduce a importaciones como las siguientes:
Es un poco como emular el método Java. Una clase por archivo. Pero con la flexibilidad adicional, siempre puede agregar otra clase a un solo archivo si tiene sentido.
fuente
Sé que mi solución no es muy popular desde el punto de vista pitónico, pero prefiero usar el enfoque de Java de un módulo -> una clase, con el módulo nombrado como clase. Entiendo la razón detrás del estilo Python, pero no me gusta mucho tener un archivo muy grande que contenga muchas clases. Me resulta difícil navegar, a pesar de estar plegado.
Otra razón es el control de versiones: tener un archivo grande significa que sus confirmaciones tienden a concentrarse en ese archivo. Potencialmente, esto puede conducir a una mayor cantidad de conflictos por resolver. También pierde la información de registro adicional de que su confirmación modifica archivos específicos (por lo tanto, involucra clases específicas). En su lugar, verá una modificación en el archivo del módulo, con solo el comentario de confirmación para comprender qué modificación se ha realizado.
En resumen, si prefiere la filosofía de Python, busque las sugerencias de las otras publicaciones. Si prefiere la filosofía similar a java, cree un Nib.py que contenga la clase Nib.
fuente
spyder
o un editor similar para ver un resumen de sus clases para ayudar a la navegación, y dos paneles con el mismo archivo abierto en ambos. Además, lea PEP8. Python es para escribir Python y Java para Java, pero Python no es para escribir Java.la punta está bien. En caso de duda, consulte la guía de estilo de Python.
Desde PEP 8 :
fuente
De PEP-8: Nombres de módulos y paquetes :
fuente
El módulo foo en python sería equivalente a un Foo archivo de clase en Java
o
El módulo foobar en python sería el equivalente a un archivo de clase FooBar en Java
fuente