python的类型注释还是很方便的, 相当于动态语言中增加类型系统, 很方便支持代码自动补全.
但是它毕竟不是编译型语言, 如果引用的类型在后面定义, 就会出现找不到此类型的提示.
这时候只需要把这个类型当作字符串就可以了, 不仅不会报错, 仍然还会享受代码补全的好处.
如下所示:
class GlobalVars:
'''全局变量'''
Stop = False # 表示LongRun是否可以停止
CurTask:'Task' = None # 表示当前任务, 会随着应用自动保存和恢复
pass
class Node: pass
class Task:
'''任务对象'''
def __init__(self) -> None:
self.name = '' # 任务名称
self.nodesDict:dict[str,Node] = {} # 节点字典, key: node.id, value: Node对象
self.startNodeIds:list[str] = [] # 起始节点Id的列表
self.curNodeId:str = None # 当前节点ID
CurTask
变量的类型为Task
, 可是这个类是在后面定义的, 直接指定会报错, 只需要把它写成字符串就好了, 并且支持代码补全, 如下图所示: