Python type hints with imported class methods(使用导入的类方法进行的Python类型提示)
                            本文介绍了使用导入的类方法进行的Python类型提示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
this answer建议在class级别使用import命令来加载其定义可以移动到其他模块的方法。作为一个最小的例子,
class_def.py:
class C:
    from _methods import m
_methods.py:
def m(self):
    return "hello"
通常,大多数功能代码完成的IDE都会将某些类中定义的函数识别为绑定方法,self将被自动识别为具有定义该方法的类的类型。遗憾的是,在上述情况下,我没有在类中定义m。仅从_methods.py无法判断self应该具有C类型。
在m的定义中,如果插入以self.开头的行,则我的IDE无法建议m或我可能在C中实现的任何其他方法。
显而易见的解决方案是添加类型提示:
from class_def import C
def m(self: C):
    return "hello"
但现在我们有了循环导入:C导入_methods,但_methods导入C的定义。如何在不引入循环导入的情况下创建类型提示?
我当前使用的是Python3.7,但我也对需要更高版本的解决方案感兴趣。
推荐答案
通过使用
typing.TYPE_CHECKING标志仅在类型检查期间导入C修复循环导入。这将使
C的值在运行时未定义。将其引起来("C")或导入__future__.annotations:
_methods.py变体1:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from class_def import C
def m(self: "C"):
    return "hello"
_methods.py变体2:
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from class_def import C
def m(self: C):
    return "hello"
                        这篇关于使用导入的类方法进行的Python类型提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:使用导入的类方法进行的Python类型提示
				
        
 
            
        基础教程推荐
             猜你喜欢
        
	     - Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
 - 在Python中从Azure BLOB存储中读取文件 2022-01-01
 - 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
 - 求两个直方图的卷积 2022-01-01
 - PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
 - 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
 - 包装空间模型 2022-01-01
 - 修改列表中的数据帧不起作用 2022-01-01
 - PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
 - 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				