在 Python 中自动将变量转换为正确的类型

问题描述 投票:0回答:1

Python中有没有一种方法可以实现自动选择正确类型的类型转换?

假设你有课:

class Foo:
    foo: list[int]

    def __init__(self):
        self.foo = cast(list[int], api.get())

self.foo = cast(list[int], api.get())
在代码中产生了很多视觉噪音,如果
self.foo
的类型已经定义,这也是多余的。此外,如果变量具有自定义类型,则必须在运行时导入该类型,以免程序崩溃,因此不能将其放入存根文件中,并且会更频繁地遇到循环导入的问题。

我更愿意使用

self.foo = cast(api.get())
来找出
self.foo
是什么类型,并将 API 调用的结果转换为该类型。

我不知道如何在运行时实现这个而不需要无休止的 hack,但是类型检查器会查看 AST,所以这应该是可能的?

谢谢!

python casting python-typing mypy pyright
1个回答
0
投票

我发帖后不久我意识到:

self.foo = cast(Any, api.get())
确实not
self.foo
的类型更改为
list[int] | Any
,正如我所期望的那样,但达到了我想要的结果(不更改类型)。

也许这就是解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.