首页 > 编程问答 >Python 类型暗示​​一个充满 myclass 对象的双端队列

Python 类型暗示​​一个充满 myclass 对象的双端队列

时间:2024-07-24 13:01:13浏览次数:18  
标签:python python-typing

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

我如何提示 myqueue 是一个 deque| ||充满 MyClass 对象? objects?

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

     

以下是使用 Python 3.6+ 中的类型提示为充满 MyClass 对象的 deque 添加类型提示的方法:

from collections import deque
from typing import Deque

class MyClass:
    pass

# 将 global_queue 提示为包含 MyClass 对象的 Deque 
global_queue: Deque[MyClass] = deque()

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

for i in range(10):
    global_queue.append(MyClass())

说明:

  1. 导入 Deque typing 模块导入 Deque
  2. 提示 global_queue global_queue 声明为一个全局变量,并使用 Deque[MyClass] 对其进行类型提示。这表明 global_queue 是一个包含 MyClass 对象的双端队列。
  3. 提示 myfunc
  4. myqueue: Deque[MyClass] = global_queue :这会将 myqueue 参数提示为一个 MyClass 对象的 Deque ,并将其默认值设置为 global_queue
  5. -> MyClass :这会将返回值类型提示为 MyClass

通过这些类型提示,的代码将更易于理解和维护,并且类型检查器可以帮助及早发现潜在的错误。

标签:python,python-typing
From: 51944520

相关文章

  • python之名称空间和作用域(关键字:global和nonlocal的使用)
    文章目录前言1、名称空间和作用域1.1引言1.2名称空间1.2.1内置名称空间1.2.2全局名称空间1.2.3局部名称空间1.2.4名称空间的产生和销毁顺序1.3作用域1.3.1全局作用域1.3.2局部作用域1.3.3名字的查找顺序1.4关键字:global1.5关键字:nonlocal前言本篇文章......
  • 用于 isinstance() 检查的 dict_keys 的显式 python3 类型是什么?
    在Python3中,我应该使用什么类型来检查字典键是否属于它?>>>d={1:2}>>>type(d.keys())<class'dict_keys'>所以我很自然地尝试了这个:>>>isinstance(d.keys(),dict_keys)Traceback(mostrecentcalllast):File"<stdin>",......
  • 初学Python时需要认识清楚的几个概念:对象、函数、圆括号给、点取、方括号取
    这是我在自学Python的过程中自己挑选和提炼出来的几个重要的概念,之所以特意介绍这些概念,其中包含了我自己的思维方式和我对Python设计理念的认识,有其独特性和局限性。我希望这篇文章能够给喜爱Python的朋友们带来一些启发。1、对象(Object)对象是Python编程的基本单元。就像音是......
  • 如何接受文件或路径作为python中方法的参数
    我正在尝试编写一个方法,该方法将接受打开的文件myFile=open("myFile.txt")obj.writeTo(myFile)myFile.close()或带有路径的字符串obj.writeTo("myFile.txt")该方法的实现如下:defwriteTo(self,hessianFile):ifisinstance(hessianFile,file):pr......
  • Python,“pathlib.Path.open()”方法和内置函数“open()”不返回“typing.IO”的实例
    我读过一些其他答案,它们似乎与现实生活中发生的事情相矛盾。尝试以下操作:fromtypingimportIOfrompathlibimportPathexample_path=Path(r"D:\Example.txt")withexample_path.open("r")asf:print(isinstance(f,IO))withopen(example_path)a......
  • 【Dison夏令营 Day 28】用 Python 创建恐龙游戏
    谁没有玩过谷歌著名的“恐龙游戏”?也许每个人都玩过这个游戏。今天,在这篇文章中,我们将帮助你用Python开发一个恐龙游戏。本教程将深入讲解每一行代码,并提供参考资料。我们将尽力让读者详细、透彻地理解这个项目。Python版恐龙游戏的任务记录包括图片文档和Python资料......
  • Python 无法 pickle 自定义类型
    我正在尝试在ProcessPool中运行一个函数,该函数将通过读取python文件并运行生成的类中的方法来加载一些自定义类。我遇到的错误是TypeError:cannotpickle'generator'object该方法需要返回一个生成器。我该如何解决这个问题,谢谢。我用谷歌搜索但没有运气。......
  • python 语法无效?
    我试图编写一些Python代码,但由于某些奇怪的原因,它重复了无效的语法,我不知道最大的问题是什么。这些行是文件中唯一的代码行。Age=int(input("Howoldareyou?:"))ifAge>=18:print("YouareaAdult!")我尝试更改行,因为这似乎是我的生气,但它没有做任何帮......
  • 如何在Python的matplotlib中将条形标签绘制到右侧并为条形标签添加标题?
    我已经在python中的matplotlib中创建了一个图表,但是以下代码中的最后一行不允许在图表之外对齐条形标签。importmatplotlib.pyplotaspltg=df.plot.barh(x=name,y=days)g.set_title("Dayspeopleshowedup")g.bar_label(g.containers[0],label_type='edge')我得......
  • 19、Python之容器:快来数一数,24678?Counter能数得更好
    引言关于数据的分组计数,前面的文章中已经涉及了很多次。眼下要进行分组计数,我们可用的方法有:1、直接使用dict进行计数,需要对首次出现的键进行判断初始化的操作;2、使用dict的setdefault()方法进行计数,代码可以简化一些,虽然方法名有点怪;3、defaultdict进行计数,可以设置自动......