在 Python 3.7.2 中,我有两个相互引用的类。
我查看了以下问题和答案:Python 中的循环(或循环)导入
而且他们没有回答在循环导入时如何保持类型提示和自动完成功能的问题。为了让 Pycharm 自动完成代码,我在问这个问题。
类 #1 表示 ElasticSearch Server 并导入类 #2 作为其成员,以便将其公开为内部搜索功能。
类 #2 表示一堆搜索 JSON 模式并导入类 #1 以定义它接收的类 #1 的实例的类型。这允许 Class #2 运行 Class #1 中定义的 GET\POST 方法。
这看起来像这样:
类 SimplifiedElasticSearch
from framework.elk.search_patterns import SearchPatterns
class SimplifiedElasticSearch(object):
...
...
类 SearchPatterns
from framework.elk.simplified_elastic_search import SimplifiedElasticSearch
class SearchPatterns(object):
def __init__(self, es_server: SimplifiedElasticSearch):
...
...
您可以看到两个模块相互导入,并且 SimplifiedElasticSearch 类的实例在 __ init __ 时被传递给类 SearchPatterns
这会导致导入错误
ImportError: cannot import name 'SimplifiedElasticSearch' from 'framework.elk.simplified_elastic_search'
为了防止错误,一种选择是不导入类 SimplifiedElasticSearch, id 删除该行
from framework.elk.simplified_elastic_search import SimplifiedElasticSearch
并为我传递给类 SearchPatterns 的 SimplifiedElasticSearch 实例编写具有自动完成和类型提示的代码
在这种情况下,如何保持自动完成和类型提示?