我有两个班,A
和B
。
A
在其体中有一个B
实例和一个int
类型的counter
实例。让我们假设B
,由于某种原因,想要增加counter
在其父A
中的值。
所以类应该是这样的:
from bTest import B
class A:
counter: int
b: B
def __init__(self, b: B):
self.counter = 0
self.b = b
在另一个文件B
:
from aTest import A
class B:
a: A
def __init__(self):
self.a = A()
def increaseA(self):
self.a.counter += 1
def setA(self, na: A):
self.a = na
self.increaseA()
这是主要的:
from aTest import A
from bTest import B
b = B()
a = A(b)
b.setA(a)
print(str(a.counter))
现在,当我运行它时,输出如下:
ImportError: cannot import name 'A' from partially initialized module 'aTest' (most likely due to a circular import)
让我们假设我想在B
和A
之间创建一个通信,所以我对更好的设计或更改责任不感兴趣。
我很困在本通知进口,我不知道如果它是可以解决的。
@MikeScotty的建议是:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bTest import B
In A file.