首页 > 解决方案 > 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 的警告会很好。

有没有一种简单的方法可以使用类型提示将整数指定为正数?

标签: pythontype-hinting

解决方案


我的方法是定义一个NewType

PositiveInt = NewType('PositiveInt', int)

也许是一个帮手,比如:

def assert_positive(n: int) -> PositiveInt:
    assert n > 0
    return PositiveInt(n)

这不是铁定的(因为你仍然可以说PositiveInt(-5)或类似的话),但大多数类型都可以通过强制转换来覆盖;仅仅强制该显式声明对于防止大多数错误大有帮助。


推荐阅读