dai*_*isy 2 python type-hinting
我有这种形式的功能:
def foo(o: "hello") -> dict:
# pass
Run Code Online (Sandbox Code Playgroud)
我知道" - > dict"意味着foo返回一个字典.我不明白的是"你好"的一部分.为什么这个类型的提示是以字符串形式给出的?什么是"你好"?
可能相关 - 这是一个自动生成的文件.
有时需要在创建对象之前设置类型注释,例如:
class Node:
def next() -> Node:
pass
Run Code Online (Sandbox Code Playgroud)
这段代码实际上失败了,因为在类仍在创建时Node被引用为注释.这与以下失败的原因相同:Node.nextNode
class T:
t = T()
Run Code Online (Sandbox Code Playgroud)
要解决这个问题,您可以使用字符串代替
class Node:
def next() -> 'Node':
pass
Run Code Online (Sandbox Code Playgroud)
所以typechecker只会Node稍后评估(前向引用).
这实际上决定是一个设计缺陷所以在python 3.7中你可以使用from __future__ import annotations,第一个例子将起作用.
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |