我的Python 3.6代码中存在关于循环导入的问题。
我有一个名为Cereal的基类和4个继承它的类(Cereal1,Cereal2,...)。每个都是不同的文件。例如:
File1中:
class Cereal:
文件2:
class Cereal1(Cereal):
等等。当我制作麦片时:
x = Cereal(K1,K2)
取决于K1和K2值,构造函数中的函数识别它是哪种类型的谷物并改变谷类的类别:
def __init__(self, K1, K2):
self.findcerealtype(K1, K2)
def findcerealtype(self, K1, K2):
if K1 < 0:
self.__class__ = Cereal1
self = Cereal1(K1, K2)
elif K1 == 0:
self.__class__ = Cereal2
self = Cereal2(K1, K2)
else:
if K2 < 1:
self.__class__ = Cereal3
self = Cereal3(K1, K2)
else:
self.__class__ = Cereal4
self = Cereal4(K1, K2)
好吧,当我按以下方式导入文件时出现问题:
File1中:
from File2 import Cereal1
from File3 import Cereal2
from File4 import Cereal3
from File5 import Cereal4
class Cereal:
def __init__(self,K1,K2):
findcerealtype(self,K1,K2)
def findcerealtype(self, K1, K2):
.
.
.and other functions
文件2:
from File1 import Cereal
class Cereal1(Cereal):
def __init__(self, K1, K2):
.
.
.and other functions
当我运行代码时,我收到以下错误:
ImportError: cannot import name 'Cereal'
据我所知,我认为问题是循环进口。我尝试了不同的导入(即导入File1)并稍后在代码中导入文件,但这些似乎都不起作用。
我还读过不应该发生循环导入,问题是我的代码结构化的方式。在这种情况下,我愿意接受有关如何重写代码的建议,但我不知道如何自己完成。
如果你设法读到最后,非常感谢你,我希望你能帮助我!