tablas - que es un dataframe en python
¿Cómo dividir un módulo de Python en varios archivos? (3)
Tengo un solo módulo de Python que contiene 3 clases: A, A1 y A2. A1 y A2 se derivan de A. A contiene funciones que operan en A1 y A2.
Todo esto funciona bien cuando está en un archivo .py. Pero ese archivo ha crecido bastante y me gustaría dividir A1 y A2 en sus propios archivos. ¿Cómo puedo dividir este archivo a pesar de una dependencia circular?
¿Cómo puedo dividir este archivo a pesar de una dependencia circular?
Opción 1: romper los ciclos: coloque la clase base en su propio módulo, las clases derivadas en módulos adicionales y las funciones que operan en esas clases derivadas en otro módulo.
Opción 2: ignorar los ciclos, importar solo módulos / paquetes en el espacio de nombres global, IE:
foo.py
class Bar:
"Frobs Quuxen"
Nunca se debe importar from foo import Bar
, solo use import foo
y consulte foo.Bar
en las funciones según sea necesario.
Creo que el núcleo de tu pregunta es que no quieres
a.py to imports a1
if
a1.py imports a.
Sin embargo, eso es totalmente bueno en python. Sin embargo, asegúrese de que no tenga ningún código fuera de las funciones / clases en un sistema con varios módulos, porque el orden en que se ejecutará variará según el lugar donde lo importe, lo que importe, la fase de la luna. , etc.
modA.py:
class A(...):
...
modA1.py:
import modA
class A1(modA.A):
...
modA2.py:
import modA
class A2(modA.A):
...
modfull
from modA import A
from modA1 import A1
from modA2 import A2
Incluso si A "procesa" A1s y A2s, debería estar bien porque gracias a la tipificación duck no necesita importar los nombres reales.