假设我想接受任何我可以调用 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/