python - "can be converted to"的类型提示是什么意思?

标签 python type-hinting

假设我想接受任何我可以调用 int() 的东西,或者任何我可以调用 str() 的东西。我如何使用新的类型提示来做到这一点?

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

最佳答案

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

请注意,Python 中的一切 都可以转换为字符串(因为__repr__ 始终可用);所以对于“可以转换为字符串”可以通过 typing.Any 处理。

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

所以:

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

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

关于python - "can be converted to"的类型提示是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505379/

相关文章:

python - 如何通过socket连接使qml对象的属性为 "dynamically updatable"?

python - Ansible 动态 list - "([Errno 2] No such file or directory:"

python - 使用装饰器进行数据驱动测试

python - Flask 路由装饰器类型提示

python - 如何使用Python3在PyCharm中编写多个签名提示

python - 调试 ansible 跟踪以查找 python 云堆栈模块中可能存在的错误

python - 切换 python 发行版

python - 如果传递给注释函数的参数类型与指定的不匹配,是否有可能使 python 抛出错误?

python - 数据类字段的工厂函数

symfony - Hwi oauth bundle 和 Symfony 3.4 无法 Autowiring 服务 : How to use hwi/oauth-bundle in symfony 3. 4 + FOSUserBundle