类中的提示类型

发布于 2021-01-29 19:17:35

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

我应该只删除: Nodeand实例在函数中检查它吗?但是,我该如何访问node的属性(我希望它是Node类的实例)?

我不知道如何在Python,BTW中实现类型转换。

关注者
0
被浏览
42
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    类型检查中的“自我”引用通常使用字符串完成:

    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默认不会执行此操作。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看