gpt4 book ai didi

python - 类中的类型提示

转载 作者:行者123 更新时间:2023-12-03 15:51:49 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do I type hint a method with the type of the enclosing class?

(7 个回答)


2年前关闭。



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 中实现类型转换,顺便说一句。

最佳答案

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

class Node:
def append_child(self, node: 'Node'):
if node != None:
self.first_child = node
self.child_nodes += [node]
这在 "Forward references" 中有描述。 PEP-0484 部分。
请注意 这不做任何类型检查 或类型转换。这是python(通常)完全忽略的类型提示1。但是,第三方工具(例如 mypy)使用类型提示对您的代码进行静态分析,并且可能会在运行前生成错误。
此外,从 python3.7 开始,您可以使用 from __future__ import annotations 将所有类型提示隐式转换为模块内的字符串。 (在 python4.0 中,这将是默认设置)。
1提示是自省(introspection)的——所以如果你真的想的话,你可以使用它们来构建某种运行时检查器,使用装饰器或类似的东西,但默认情况下 python 不会这样做。

关于python - 类中的类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51862317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com