Python 类型提示填充了 myclass 对象的双端队列

576*_*76i 7 type-hinting python-3.x python-3.6

使用 Python 3.6 或更新版本,我想键入一个函数myfunc,它返回一个 MyClass 的对象。

我如何暗示myqueue是一个充满MyClass对象的双端队列

from collections import deque

global_queue = deque()

class MyClass:
    pass

def myfunc(myqueue=global_queue) -> MyClass:
    return myqueue.popleft()

for i in range(10):
    global_queue.append(MyClass())
Run Code Online (Sandbox Code Playgroud)

Mic*_*x2a 10

在 Python 3.9 中,可以deque['MyClass']()直接使用。

如果您使用的是 Python 3.6.1 或更高版本,则可以使用typing.Deque

from typing import Deque
from collections import deque

global_queue: Deque['MyClass'] = deque()

class MyClass:
    pass

def myfunc(myqueue: Deque[MyClass] = global_queue) -> MyClass:
    return myqueue.popleft()

for i in range(10):
    global_queue.append(MyClass())
Run Code Online (Sandbox Code Playgroud)

或者,您可以global_queue = Deque['MyClass']()改为 - 在运行时,这将构造一个collections.deque对象。

如果您需要支持 Python 3.5,请安装第typing_extensions3 方库并执行from typing_extensions import Deque. 该库包含在打字模块首次添加到标准库之后添加的类型的向后移植。