5

Вопрос по python – Устранить циклическую ошибку импорта в python [дубликат]

Possible Duplicate:
Circular (or cyclic) imports in Python

У меня есть класс B, который импортирует и создает экземпляры класса A. Класс A нуждается в ссылке на B в своем конструкторе и поэтому включает B.

from a import A
class B:
  def __init__(self):
    self.a = A()

from b import B
class A:
  def __init__(self, ref):
    assert isinstance(ref, B)
    self.ref = ref

Это не работает. Основной файл импортирует B и использует его ... нет. Что-то с импортом не так.

Ошибка из файла ImportError: cannot import name B

  • Error: User Rate Limit Exceeded

    от HWende
  • Error: User Rate Limit Exceeded

    от HWende
  • Не ответ, но, вероятно, лучше иметь лучший дизайн, который не требует такого циклического импорта.

    от jamylak
  • Нет, это не работает. Так что не делай этого.

    от Daniel Roseman
  • 1

    Просто импортируйте классы в

    __init__ метод

    class A:
       def __init__(self, ref):
          from b import B
          assert isinstance(ref, B)
          self.ref = ref
    

  • 0

    import a

    __init__Error: User Rate Limit Exceeded

    class B:
      def __init__(self):
        self.a = a.A(self)
    
    import b
    class A:
      def __init__(self, ref):
        assert isinstance(ref, b.B)
        self.ref = ref
    

  • 13

    Error: User Rate Limit Exceeded

    a.py:

    class A:
        def __init__(self, ref):
            from b import B
            assert isinstance(ref, B)
            self.ref = ref
    

    Учебный классBAb.