Я хотел бы отделить некоторый абстрактный код от его реализации и связать фактическую реализацию как импорт в __init__.py
.
Мой 'model/__init__.py'
выглядит так:
from .estimator import AbstractEstimator
# link default estimator implementation
from impl.tf import TF_Estimator as Estimator
Однако TF_Estimator является подклассом 'model.AbstractEstimator'
:
from model import AbstractEstimator
class TF_Estimator(AbstractEstimator):
...
Как я могу разрешить эту циклическую зависимость? Есть ли способ "игнорировать" импорт 'TF_Estimator'
в 'model/__init__.py'
?
Моей целью было бы запустить "from model import Estimator"
и получить "TF_Estimator"
обратно в конце.
model.AbstractEstimator
- это просто еще одно название для.estimator.AbstractEstimator
. Почему вы не можете использовать это вместо этого? Пространство именmodel
следует рассматривать как открытый интерфейс; это не обязательно должно использоваться вашей реализацией. - person chepner   schedule 09.03.2018