使用字符串类型来引用其他模块中的类或函数
例如,在模块A中需要使用模块B中的某个类来声明自己的类型,但又不能直接导入该类或引入模块B,可以使用字符串类型来引用:
模块A:
from typing import Dict, Any
def func_a() -> Dict[str, Any]:
from .module_b import ClassB
result = {
"value": ClassB(),
"other": "whatever"
}
return result
if __name__ == "__main__":
print(func_a())
模块B:
class ClassB:
def __init__(self):
self.value = 0
def do_something(self):
pass
这种方式可以避免循环导入的问题,同时还能保证类型定义的正确性。