我知道python中的循环导入问题已经出现过很多次了,我已经阅读了这些讨论。在这些讨论中反复提出的意见是,循环导入表明设计不良,应重新组织代码以避免循环导入。
有人可以告诉我在这种情况下如何避免循环导入吗?:我有两个类,并且我希望每个类都有一个构造函数(方法),该构造函数接受另一个类的实例并返回该类的实例。
更具体地说,一类是可变的,一类是不变的。哈希,比较等需要不可变的类。可变类也需要做事。这类似于集合和冻结集合或列表和元组。
我可以将两个类定义放在同一模块中。还有其他建议吗?
一个玩具示例将是类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()
这工作得很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句