Separação de classes em diferentes arquivos e comando import

Separação de classes em diferentes arquivos e comando import

por Raphael Ribeiro da Costa e Silva -
Número de respostas: 2

Tenho uma dúvida quanto a separação de classes em diferentes arquivos.

Por exemplo, vamos supor que tenho 3 classes dividas em 3 arquivos:

classe0.py

classe1.py

classePrincipal.py

E na Classe Principal um comando para importar as outras classes:

from classe0 import *

from classe1 import *

Fazendo isso, estou obtendo problemas* pois a classe 0 depende da classe 1  (as classes dependem entre si). A unica forma que consegui resolver isso foi utilizar import * dentro das outras classes também, o que me parece redundância. Gostaria de saber se existe uma forma mais interessante de resolver esse problema. 


Esse problema também ocorre quando uma mesma função é usada em mais de uma classe. Só consegui resolver o nameError definindo a mesma função em cada arquivo.


*NameError: name 'blablabla' is not defined

Em resposta à Raphael Ribeiro da Costa e Silva

Re: Separação de classes em diferentes arquivos e comando import

por Marcelo Queiroz -

Oi, Raphael!

Usar o import dentro das classes que dependem de outras classes não é redundância, é o jeito padrão de fazer isso. A ideia é deixar os módulos "auto-suficientes", e pra isso eles precisam realmente importar todas as suas dependências. Por outro lado, o fato de você ter dependências circulares pode ser indício de que talvez o código pudesse ser reorganizado de outro modo, sem essa circularidade. Possivelmente essa função que você copiou várias vezes seja uma dessas partes do código que poderia estar em um módulo separado, importado por todas as classes que a usam.

Abraços,

Marcelo