ABC Chlid类问题

时间:2019-02-24 14:07:58

标签: python django python-3.x

在我的Django应用中,我有一个模块下拉列表

dropdown
  __init_.py
  select.py
  inline.py

在select.py中有一个课程

from inline import doauto
class AbstractOption(ABC):
  def method1:
  def method2:
class Select(AbstractOption):
  def load_request:
  def method_helper:
    ....
     doauto()
    ....

在inline.py中,我有一个课程

class Inlineselect(AbstractOption):
   def load_request:
   def method_helper:

def doauto:
 inl= Inlineselect()
 inl.load_request()
  

我遇到以下错误:ImportError:无法导入名称   选择(/../../select.py)中的AbstractOption

我不明白为什么这个问题会出现。在inline.py中,我从select.py导入了AbstractOption类,当我在select模块类中从inline使用子类时,它给出了类导入错误。

1 个答案:

答案 0 :(得分:0)

这称为循环导入问题。每当您从其他模块或软件包导入某些内容时,都需要先定义一些内容,然后才能导入。下面的代码应该可以解决问题。

select.py

from abc import ABC

class AbstractOption(ABC):
    def method1:
        pass

    def method2:
        pass

from inline import doauto

class Select(AbstractOption):
    def load_request:
        pass

    def method_helper:
        doauto()

inline.py

from select import AbstractOption

class Inlineselect(AbstractOption):
    def load_request:
        pass

    def method_helper:
        pass

def doauto:
    inl = Inlineselect()
    inl.load_request()