2010-05-19 16 views
18

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?
en minúsculas como classname.py o lo mismo que ClassName.py?
¿Necesito hacer algo especial si quiero crear un objeto de esta clase o es el hecho de que es en el mismo "proyecto" (netbeans) hace que sea aceptable para crear un objeto de ella?¿Las clases en Python están en diferentes archivos?

+2

Duplicado: http://stackoverflow.com/questions/106896/how-many-python-classes-should-i-put-in-one-file –

Respuesta

32

En Python, un archivo se llama module. Un módulo puede consistir en múltiples clases o funciones.

Como Python es no solo un idioma 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 pertenecen juntos, es decir, proporcionar una funcionalidad similar o dependen unos de otros.
Por supuesto, no debes exagerar esto. La legibilidad realmente sufre si su módulo consiste en demasiadas clases o funciones. Entonces es probable que sea hora de reagrupar la funcionalidad en diferentes módulos y crear packages.


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

nombres genéricos

Casi sin excepción, los nombres de clase de uso de la convención CapWords. Las clases para uso interno tienen un guion bajo adicional.

y

paquete y los nombres de módulo

módulos deben tener nombres, todo en minúsculas cortos. Los subrayados se pueden usar en el nombre del módulo si mejora la legibilidad. los paquetes de Python deben también tienen nombres, todo en minúsculas cortos, aunque el uso de guiones es desanime.

Desde nombres de los módulos se asignan a los nombres de archivo, y algunos sistemas de archivos son sensible a mayúsculas y truncar los nombres largos, es importante que el módulo nombres serán elegidos para ser bastante corto - esto no será un problema en Unix , pero puede ser un problema cuando el código se transporta a versiones anteriores de Mac o de Windows o DOS.


Para crear una instancia de un objeto, que tiene que importar la clase en su archivo. MI.g

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

o

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

o

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

Usted está pidiendo cosas básicas esenciales, por lo que recomendamos leer la tutorial.

+0

También para nombrar ver PEP8 http: //www.python. org/dev/peps/pep-0008/ – Mark

+0

Ok, dado que se llama módulo, ¿debo importarlo? y si es así, digamos que mi nombre de archivo es el site.py Quiero utilizar las clases de que en mi otra blabla.py archivo, no escribo algo así como site.py importación? – Asaf

+1

@Asaf: ver mi respuesta actualizada. Cómo tiene que importar depende de cosas diferentes. Si los módulos están en el mismo paquete, puede importar el módulo. Si no, debes importar el paquete también. ** Nunca ** incluye el sufijo del archivo (es decir, '.py'). Lea el tutorial y busque aquí en SO sobre cómo importar correctamente. Esta pregunta ya fue hecha. –

1

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

utilizar las clases/funciones definidas en el módulo/archivo, tendrá que import el módulo/archivo.

Cuestiones relacionadas