Python 在类构造函数中表示同级嵌套类的类型提示
在使用pycharm编码时,我使用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给了我一个错误,我无法找到如何使其正确在线的答案:
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)正确地选择了类型。