例如
from queue import Queue
q: Queue = Queue()
q.put("abc")
Run Code Online (Sandbox Code Playgroud)
这没关系。现在我想指定进入队列的类型。
from queue import Queue
q: Queue[str] = Queue()
q.put("abc")
Run Code Online (Sandbox Code Playgroud)
这会得到“TypeError:'type'对象不可下标”
Jas*_*sha 22
现在(从 Python 3.9 开始)可以添加下标Queue:
a: Queue[int] = Queue() # valid
Run Code Online (Sandbox Code Playgroud)
Lag*_*aer 11
打字功能当前不支持此功能。请参阅 Python 核心开发人员的讨论:https://bugs.python.org/issue33315
它还建议了当前的解决方法,将注释放在引号中:
q: "Queue[str]" = Queue()
Run Code Online (Sandbox Code Playgroud)
解决方法是注释可以是任何类型(没有双关语)。字符串是完全可以接受的类型,但如果您想使用非字符串注释,那么它们必须正确“表现”。您可以注释某物是 a Queue,因为注释可以具有任何类型。但该类Queue本身不可订阅,因此Queue[int]不起作用。