我知道在python中循环导入的问题以前已经被提过很多次了,我也读过这些讨论。在这些讨论中反复提出的评论是,循环导入是一个糟糕设计的标志,应该重新组织代码以避免循环导入。
有人能告诉我在这种情况下如何避免循环导入吗?:我有两个类,我希望每个类都有一个构造函数(方法),它接受另一个类的实例并返回该类的实例。
更具体地说,一个类是可变的,另一个类是不可变的。不可变的类是散列、比较等所需要的。可变类也是做事情所必需的。这类似于集合和冻结集,或者类似于列表和元组。
我可以将两个类定义放在同一个模块中。还有其他的建议吗?
一个玩具示例是类A,它的属性是一个列表,而类B的属性是一个元组。然后,类A有一个方法,它获取类B的一个实例,并返回类A的一个实例(通过将元组转换为一个列表),类似地,类B有一个方法,它获取类A的一个实例,并返回类B的一个实例(通过将列表转换为一个元组)。
发布于 2011-09-07 23:55:38
只导入模块,不从模块导入:
考虑a.py
import b
class A:
def bar(self):
return b.B()
和b.py
import a
class B:
def bar(self):
return a.A()
这可以很好地工作。
https://stackoverflow.com/questions/7336802
复制相似问题