python - Python typehint int 为正
问题描述
我很好奇在 Python中指定类型不仅是一个int
,而且是一个积极的最好方法是什么。int
例子:
# As function argument
def my_age(age: int) -> str:
return f"You are {age} years old."
# As class property
class User:
id: int
在这两种情况下,负值都是错误的。收到我的 IDE/linter 的警告会很好。
有没有一种简单的方法可以使用类型提示将整数指定为正数?
解决方案
我的方法是定义一个NewType
:
PositiveInt = NewType('PositiveInt', int)
也许是一个帮手,比如:
def assert_positive(n: int) -> PositiveInt:
assert n > 0
return PositiveInt(n)
这不是铁定的(因为你仍然可以说PositiveInt(-5)
或类似的话),但大多数类型都可以通过强制转换来覆盖;仅仅强制该显式声明对于防止大多数错误大有帮助。