¿Las clases en Python están en diferentes archivos?

Al igual que Java (o php), estoy acostumbrado a separar las clases en archivos.
¿Es el mismo trato en Python? Además, ¿cómo debo nombrar el archivo?
¿Minúscula como classname.py o lo mismo como ClassName.py?
¿Necesito hacer algo especial si quiero crear un objeto de esta clase o si el hecho de que esté en el mismo “proyecto” (netbeans) hace que sea correcto crear un objeto a partir de él?

En Python, un archivo se llama módulo . Un módulo puede constar de múltiples clases o funciones.

Como Python no es solo un lenguaje OO, no tiene sentido tener una regla que diga que un archivo solo debe contener una clase.

Un archivo (módulo) debe contener clases / funciones que pertenezcan juntas, es decir, que proporcionen una funcionalidad similar o que dependan de otras.
Por supuesto que no debes exagerar esto. La legibilidad realmente sufre si su módulo consta de demasiadas clases o funciones. Entonces es probable que sea hora de reagrupar la funcionalidad en diferentes módulos y crear paquetes .


Para las convenciones de nomenclatura, es posible que desee leer PEP 8, pero en resumen:

Nombres de clase

Casi sin excepción, los nombres de clase utilizan la convención de CapWords. Las clases para uso interno tienen además un guión bajo.

y

Nombres de paquetes y módulos

Los módulos deben tener nombres cortos, todo en minúsculas. Los guiones bajos se pueden usar 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 se elijan para que sean bastante cortos. Esto no será un problema en Unix, pero puede ser una problema cuando el código se transporta a versiones anteriores de Mac o Windows, o DOS.


Para crear una instancia de un objeto, debe importar la clase en su archivo. P.ej

>>> from mymodule import MyClass >>> obj = MyClass() 

o

 >>> import mymodule >>> obj = mymodule.MyClass() 

o

 >>> from mypackage.mymodule import MyClass >>> obj = MyClass() 

Usted está preguntando cosas básicas esenciales, por lo que recomiendo leer el tutorial .

No, puede definir múltiples clases (y funciones, etc.) en un solo archivo. Un archivo también se llama un módulo.

Para usar las clases / funciones definidas en el módulo / archivo, deberá import el módulo / archivo.