Błąd importu. Odniesienia kołowe

Mam taki pakiet

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleA.py
        moduleB.py
        moduleC.py
        moduleD.py
    subpackage2/
       __init__.py
       moduleX.py
       moduleY.py
       moduleZ.py

W moduleB.py importuję

from moduleA import bar

W module A importuję

from moduleB import foo

Dostaję ImportError.

ImportError: cannot import name foo

Co może być problemem tutaj? i aby uniknąć tego problemu, co powinienem zrobić? i co powinienem napisać_w tym_.py pf pakiet, podpakiet1, podpakiet2?

_w tym_.py z podpakietu1

from moduleA import *
from moduleB import *
from moudleC import *
from moudleD import *

_w tym_.py z podpakietu2

from moduleX import *
from moduleY import *
from moduleZ import *

_w tym_.py pakietu

from subpackage1 import *
from subpackage2 import *

Czy jest jakiś problem z moim_w tym_.py pliki?

EDYTOWAĆ: Zmieniłem import

moduleB

from .moduleA import bar

modułA

from .moduleB import foo

Mimo to otrzymuję ten sam błąd importu.

ImportError: cannot import name foo

EDYTOWAĆ:

moduleB

def Bar():
    def __init__(self):
        self.foo = Foo()
        self.val = 10
        .
        .

modułA

def Foo():
    def __init__(self):
        self.bar = Bar()
        self.val = 5
        .
        .   

Chce to zrobić. A ja nalegam, aby obie klasy były w różnych plikach. Jak powinienem importować?

questionAnswers(2)

yourAnswerToTheQuestion