gpt4 book ai didi

python - 使用 Python 类型提示强制使用数字单位

转载 作者:行者123 更新时间:2023-12-03 22:29:36 25 4
gpt4 key购买 nike

有没有办法使用 Python 类型提示作为单位? type hint docs 显示了一些示例,表明使用 NewType 是可能的,但这些示例还表明,相同“新类型”的两个值的相加不会给出“新类型”的结果,而是给出基本类型的结果。有没有办法丰富类型定义,以便您可以指定像单位一样工作的类型提示(不是在它们转换的范围内,而是在获得不同单位时收到类型警告)?可以让我这样做或类似的事情:

Seconds = UnitType('Seconds', float)
Meters = UnitType('Meters', float)

time1 = Seconds(5)+ Seconds(8) # gives a value of type `Seconds`
bad_units1 = Seconds(1) + Meters(5) # gives a type hint error, but probably works at runtime
time2 = Seconds(1)*5 # equivalent to `Seconds(1*5)`
# Multiplying units together of course get tricky, so I'm not concerned about that now.
我知道存在单位的运行时库,但我好奇的是,python 中的类型提示是否能够处理其中的一些功能。

最佳答案

你链接的 on the page 不是答案吗?

from typing import NewType

Seconds = NewType('Seconds', float)
Meters = NewType('Meters', float)

time1 = Seconds(5)+ Seconds(8) # gives a value of type `Seconds`
bad_units1 = Seconds(1) + Meters(5) # gives a type hint error, but probably works at runtime
time2 = Seconds(1)*5 # equivalent to `Seconds(1*5)`
看起来,由于 we can't pass a value, only a type, into a generic ,不可能进行全维分析 as available in Adaimplementable in C++

关于python - 使用 Python 类型提示强制使用数字单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62603598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com