una que paquetes modulos lista libreria instalar importar crear clases bibliotecas python class module package

modulos - python crear paquetes



Organizar clases de Python en módulos y/o paquetes (2)

La solución de Zach se rompe en Python 3. Aquí hay una solución fija.

Mucho de esto es preferencia personal. Al usar los módulos de Python, tienes la opción de mantener cada clase en un archivo separado y aún permitir import converters.SomeConverter from converters import SomeConverter (o from converters import SomeConverter )

La estructura de tu archivo podría verse más o menos así:

* converters - __init__.py - baseconverter.py - someconverter.py - otherconverter.py

y luego en su archivo __init__.py :

from converters.baseconverter import BaseConverter from converters.otherconverter import OtherConverter

Me gusta la convención de Java de tener una clase pública por archivo, incluso si a veces hay buenas razones para incluir más de una clase pública en un solo archivo. En mi caso, tengo implementaciones alternativas de la misma interfaz. Pero si los ubicara en archivos separados, tendría nombres redundantes en las declaraciones de importación (o nombres de módulos engañosos):

import someConverter.SomeConverter

mientras que someConverter sería el nombre del archivo (y del módulo) y SomeConverter el nombre de la clase. Esto se ve bastante poco elegante para mí. Poner todas las clases alternativas en un archivo daría lugar a una declaración de importación más significativa:

import converters.SomeConverter

Pero me temo que los archivos se vuelvan bastante grandes si coloco todas las clases relacionadas en un solo archivo de módulo. ¿Cuál es la mejor práctica de Python aquí? Es una clase por archivo inusual?


Mucho de esto es preferencia personal. Al usar los módulos de Python, tienes la opción de mantener cada clase en un archivo separado y aún permitir import converters.SomeConverter from converters import SomeConverter (o from converters import SomeConverter )

La estructura de tu archivo podría verse más o menos así:

* converters - __init__.py - baseconverter.py - someconverter.py - otherconverter.py

y luego en su archivo __init__.py :

from baseconverter import BaseConverter from otherconverter import OtherConverter