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

Posted

技术标签:

【中文标题】Python 类型提示填充了 myclass 对象的双端队列【英文标题】:Python type hinting a deque filled with myclass objects 【发布时间】:2019-01-27 09:31:00 【问题描述】:

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

我如何暗示 myqueue 是一个 deque 填充有 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())

【问题讨论】:

【参考方案1】:

在 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())

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

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

【讨论】:

打字中有双端队列?!哈!当它就在我的鼻子底下时,我一直在努力寻找。一定要热爱社区。​​span>

以上是关于Python 类型提示填充了 myclass 对象的双端队列的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助将 MYClass 对象存储在核心数据中

用字典 <String,MyClass> 在 C# 中填充 WPF DataGrid

C++:填充数组的时间太长

Myclass.class与new MyClass()有什么区别?

父对象的python类型提示字段

从类型到实例化对象的 Python 通用类型提示