如何避免Python中的循环导入?
作者:互联网
参见英文答案 > Circular import dependency in Python 6个
我知道python中循环导入的问题已经出现过很多次了,我已经阅读过这些讨论了.在这些讨论中反复提出的评论是,循环导入是设计错误的标志,应重新组织代码以避免循环导入.
有人可以告诉我如何在这种情况下避免循环导入吗?:我有两个类,我希望每个类都有一个构造函数(方法),它接受另一个类的实例并返回该类的实例.
更具体地说,一个类是可变的,一个是不可变的.不可变类是必需的
用于散列,比较等.可变类也需要做事.这与sets和frozensets或者列表和元组类似.
我可以将两个类定义放在同一个模块中.还有其他建议吗?
玩具示例是类A,其具有属性是列表,而类B具有属性是元组.然后类A有一个方法,它接受类B的实例并返回类A的实例(通过将元组转换为列表),类似地,类B有一个方法,它接受类A的实例并返回类B的实例(通过将列表转换为元组).
解决方法:
只导入模块,不要从模块导入:
考虑a.py:
import b
class A:
def bar(self):
return b.B()
和b.py:
import a
class B:
def bar(self):
return a.A()
这完全没问题.
标签:python,import,circular-dependency 来源: https://codeday.me/bug/20190915/1806337.html