Python 在类构造函数中表示同级嵌套类的类型提示

Python 在类构造函数中表示同级嵌套类的类型提示,python,typing,python-typing,Python,Typing,Python Typing,在使用pycharm编码时,我使用python的类型提示系统,我相信它使用了键入模块,但是我有一个场景,pycharm给了我一个错误,我无法找到如何使其正确在线的答案: from typing import List class Something: class A(object): def __init__(self, d: int) -> None: self.data = d class B(object):

在使用pycharm编码时,我使用python的类型提示系统,我相信它使用了
键入
模块,但是我有一个场景,pycharm给了我一个错误,我无法找到如何使其正确在线的答案:

from typing import List


class Something:
    class A(object):
        def __init__(self, d: int) -> None:
            self.data = d

    class B(object):
        def __init__(self, inListStr: List[str], inListA: List[A]): # "A" here is marked as "Unresolved Reference". Something.A does not fix the issue either
            self.list_of_str = inListStr
            self.list_of_a = inListA

    def __init__(self, inB: B): #B here is accepted ok
        self.data_b = inB

你知道我怎样才能正确地在列表中键入“As列表”类型的
inListA

使用
Something.A
,但要用引号括起来:

。。。
定义初始化(self,inListStr:List[str],inListA:List['Something.A']):
...

Python解释器无法在代码中的该点计算
A
Something.A
。通过将其设置为字符串,类型检查器仍然可以在避免运行时计算的同时确定类型。

这是否回答了您的问题?这需要python 3.7您使用的python版本是什么?我要问的是,Python的旧版本没有那么灵活的说法,就是说,你仍然处于定义中的类型(就像你在这里做的那样)。我不使用pycharm,但对我来说,在Python3.9和mypy中,键入提示。A可以很好地工作,尽管它对你来说不太好。@Aaron在Python3.7上,并从以后的工作中导入注释,谢谢。据我所知,这不是一件“正确”的事情,而是一种退步,参见示例。但是,如果完成了,它确实可以工作,并且我的IDE(PyCharm)正确地选择了类型。