gpt4 book ai didi

python - 为什么 isinstance ('foo' , str) == False

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:42 25 4
gpt4 key购买 nike

我使用 futurize 轻轻地将我的模块迁移到 Python3,现在我的文件顶部有这个:

from builtins import str

future.types.newstr.BaseNewStr 导致我对 isinstance 产生了错误的结果:

>>> isinstance('foo', (unicode, str))
False

如何正确解决这个问题?

请注意,添加 from __future__ import unicode_literals 没有帮助,因为 isinstance 是从其他地方调用的函数调用的,如果 unicode_literals 已正确导入。

编辑

我发现我可以使用这个:

def foo(string):
import six
if isinstance(string, six.string_types):
return six.types.StringType('bar')

这看起来很像样板...

最佳答案

我不清楚你想用样板代码实现什么,但检查实例类型的正确方法在那里。要回答您修复 isinstance 检查的问题,您只需做

isinstance('foo', six.string_types)

是的,您还必须在要使用它的任何地方导入 six 库,这在处理 python2/3 代码时很常见。

顺便说一句,如果您不需要 python2 兼容性,而只想迁移到 python3,则不需要从 future(内置)中导入

关于python - 为什么 isinstance ('foo' , str) == False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40464421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com