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?
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?
Respuestas:
Solo punta. Nombre la clase Nib, con una N mayúscula. Para obtener más información sobre las convenciones de nomenclatura y otros consejos de estilo, consulte PEP 8 , la guía de estilo de Python.
Client
y, comprensiblemente, a menudo hago instancias de ella que quiero llamar client
. Pero de acuerdo con su convención, el nombre del módulo sería client
, por lo que siempre tendría que nombrar mis instancias como algo antinatural client_instance
. ¿Qué opinas de este problema?
Client
, entonces chocaría con el nombre de la clase Client
. Puesto que hay sólo variantes 3 posible de nomenclatura ( client
, Client
o CLIENT
) 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:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
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.
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.
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 :
Nombres de paquetes y módulos Los módulos deben tener nombres cortos en minúsculas. Se pueden usar guiones bajos en el nombre del módulo si mejora la legibilidad. Los paquetes de Python también deben tener nombres cortos en minúsculas, aunque se desaconseja el uso de guiones bajos.
Dado que los nombres de los módulos se asignan a los nombres de los archivos, y algunos sistemas de archivos no distinguen entre mayúsculas y minúsculas y truncan los nombres largos, es importante que los nombres de los módulos sean bastante cortos; esto no será un problema en Unix, pero puede ser un problema. problema cuando el código se transporta a versiones anteriores de Mac o Windows, o DOS.
Cuando un módulo de extensión escrito en C o C ++ tiene un módulo Python adjunto que proporciona una interfaz de nivel superior (por ejemplo, más orientada a objetos), el módulo C / C ++ tiene un subrayado inicial (por ejemplo, _socket).
De PEP-8: Nombres de módulos y paquetes :
Los módulos deben tener nombres cortos en minúsculas. Se pueden usar guiones bajos en el nombre del módulo si mejora la legibilidad.
Los paquetes de Python también deben tener nombres cortos en minúsculas, aunque se desaconseja el uso de guiones bajos.
Cuando un módulo de extensión escrito en C o C ++ tiene un módulo Python adjunto que proporciona una interfaz de nivel superior (por ejemplo, más orientada a objetos), el módulo C / C ++ tiene un subrayado inicial (por ejemplo, _socket).
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