什么是“可以转换为”的类型提示是什么意思?

时间:2016-09-15 07:32:38

标签: python type-hinting

假设我想接受我可以拨打int()的任何内容,或者我可以致电str()的任何内容。如何使用新类型提示进行此操作?

使用typing.SupportsInt进行注释不起作用,因为mypy会警告不要传递字符串。

1 个答案:

答案 0 :(得分:4)

你不能用类型提示。类型提示不能说明字符串的内容,只是它必须字符串。

请注意,Python中的所有可以转换为字符串(因为__repr__始终可用);因此,可以将'转换为字符串'可由typing.Any处理。

对于int(),您只能再次指定特定的挂钩和类型;您可以指定您接受具有__int__()方法的对象,但如果您也接受字符串,则无法指定 该字符串中的内容。

所以:

AcceptableToInt = Union[SupportsInt, str, bytes, bytearray]

可以让您检查int()接受哪些类型,但是如果他们在您实际尝试时会抛出ValueError异常,则不会。