class Node:
def append_child(self, node: Node):
if node != None:
self.first_child = node
self.child_nodes += [node]
我该怎么做 node: Node
?因为当我运行它时,它说 name 'Node' is not defined
。
我是否应该只删除 : Node
并在函数内部进行实例检查?但是我怎么能访问 node
的属性(我希望它是 Node
类的实例)?
我不知道如何在 Python 中实现类型转换,顺便说一句。
原文由 Ben Sat 发布,翻译遵循 CC BY-SA 4.0 许可协议
类型检查中的“self”引用通常使用字符串来完成:
PEP-0484 的 “前向参考” 部分对此进行了描述。
请注意, 这不会进行任何类型检查 或转换。这是 python(通常)完全忽略1的 _类型提示_。但是,第三方工具(例如 mypy)使用类型提示对您的代码进行静态分析,并可能在运行前产生错误。
此外,从 python3.7 开始,您可以使用
from __future__ import annotations
将所有类型提示 隐式 转换为模块中的字符串(在 python4.0 中,这将是默认设置)。1提示 是可 自省的——所以如果您真的愿意,您可以使用它们来使用装饰器等构建某种运行时检查器,但 python 默认情况下不会这样做。