Py学习  »  Python

exec()赋值后的Python类型暗示

Mohsen Banan • 3 年前 • 1138 次点击  

我经常会遇到这样的情况,我会和exec一起完成任务,比如:

 ...
 exec(
     "someClassInstance = someMapper({someInfo})".format(someInfo=someInfo),
     globals(),
 )

哪里 someClassInfo 是一个 SomeClass . 然后我用 someClassInstance 例如:

...
someVar = someClassInstance.someMethod()  # type: ignore

所有这些都很好,我实现了我想要的。

但是,从阅读角度和IDE(在我的例子中是emacs+pyright)角度来看,someClassInstance的(非运行时)类型是未知的。

所以,我加上“#type:ignore”。

但是,我想以某种方式使用Python3的类型暗示来让大家知道这一点 someClassInstance属于SomeClass类型(或其祖先之一)。

可能吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128072
 
1138 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Frank Yellin
Reply   •   1 楼
Frank Yellin    3 年前

如果你打字

cast(type, value1)

那么结果将与 value ,但您已经告诉类型检查器,它的类型就是指定的类型,并且它只需要相信您。

从文件中:

typing.cast(typ, val)

将值强制转换为类型。

这将返回不变的值。向类型检查器发送此信号 返回值具有指定的类型,但在运行时 故意不检查任何东西(我们希望它尽可能快 可能)。