当前位置: 首页 > news >正文

使用 from __future__ import annotations 语句来允许在类型注释中使用尚未定义的类名

我们来看一个例子,先定义类C,定义其中的函数时,在类型注释中使用了尚未定义的类名D:

>>> class C:  
...     def some_method(self, b: D) -> None:  
...         print(f"A is interacting with {b}")  
... 
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 2, in C
NameError: name 'D' is not defined
>>> from __future__ import annotations
>>> class C:  
...     def some_method(self, b: D) -> None:  
...         print(f"A is interacting with {b}")  
... 
>>> 

可以看到,第一次定义C的时候报错,说D没有定义。

然后输入 from __future__ import annotations之后,再定义C的时候,就没有报错了。

 为了解决类型注释未定义这个问题,Python 3.7及以上版本引入了一个特殊的from __future__ import annotations语句。这个语句的作用是改变Python解释器处理类型注解的方式,使得类型注解中的字符串在运行时被当作字符串处理,而不是在定义时立即求值。这允许你在类定义之前使用尚未定义的类名作为类型注解,因为此时这些类型注解仅仅是字符串,不会立即被解释器评估。


http://www.mrgr.cn/news/36145.html

相关文章:

  • centos7安装Redis单机版
  • AI时代下的程序员:如何应对技术变革与提升竞争力
  • 先进封装技术 Part01---“凸块”(Bump)科普
  • 小孩真的需要手机上学吗?怎样远程了解他在学校用iPhone干什么?
  • 工作安排 - 华为OD统一考试(E卷)
  • Educational Codeforces Round 20 F. Coprime Subsequences(DP+容斥)
  • 深入解析网络通信关键要素:IP 协议、DNS 及相关技术
  • 股价上涨210%后,目标价又被花旗大幅上调,AppLovin还能继续上涨吗?
  • 前端文件上传全过程
  • PG逻辑订阅功能
  • 尚硅谷MyBatis笔记
  • Spring 的作用和优势
  • 省市区乡村五级地址库
  • C/C++语言基础--C++类数据、静态与非静态、常成员、友员、成员变量与函数指针等相关知识点
  • 3. 轴指令(omron 机器自动化控制器)——>MC_MoveZeroPosition
  • uboot — uboot命令的使用
  • 如何在 Linux 中管理和清理日志文件( `find` 命令按时间批量删除日志)
  • 2024.9.25 作业和思维导图
  • 线程安全的数据结构使用起来一定线程安全吗?
  • 将ipad作为数位板使用教程/出现延迟拖拽怎么办?