类中的提示类型
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
and实例在函数中检查它吗?但是,我该如何访问node
的属性(我希望它是Node
类的实例)?
我不知道如何在Python,BTW中实现类型转换。
-
类型检查中的“自我”引用通常使用字符串完成:
class Node: def append_child(self, node: 'Node'): if node != None: self.first_child = node self.child_nodes += [node]
PEP-0484的“转发参考”部分对此进行了描述。
请注意, 这不会进行任何类型检查 或转换。这是一个 类型提示
,python(通常)完全不理会1。但是,第三方工具(例如mypy)使用类型提示对代码进行静态分析,并且可能在运行时生成错误。另外,从python3.7开始,您可以使用来 隐式 将所有类型提示转换为模块内的字符串
from __future__ import annotations
(在python4.0中,这是默认值)。1提示 是 自省的-因此,如果您确实愿意,可以使用它们使用装饰器或类似工具来构建某种运行时检查程序,但是python默认不会执行此操作。