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

5

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

Нет, это не работает. Так что не делай этого. Daniel Roseman
Error: User Rate Limit Exceeded HWende
Не ответ, но, вероятно, лучше иметь лучший дизайн, который не требует такого циклического импорта. jamylak

Ваш Ответ

3   ответа
13

a.py:

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

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

Error: User Rate Limit Exceeded HWende
0

__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
1

__init__ метод

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

Похожие вопросы