gpt4 book ai didi

Python:为什么isinstance可以返回False,什么时候应该返回True?

转载 作者:IT老高 更新时间:2023-10-28 21:13:10 25 4
gpt4 key购买 nike

我目前正在 pdb 跟踪中解决这个问题

ipdb> isinstance(var, Type)
False
ipdb> type(var)
<class 'module.Type'>
ipdb> Type
<class 'module.Type'>

为什么会发生这种情况?

P。 S. isinstance(var, type(var)) 按预期返回True

最佳答案

  1. 我只能猜测,但如果你在 module

    class Type(object): pass
    var = Type()
    class Type(object): pass

    那么这两种类型看起来都像 <class 'module.Type'> ,但仍然不同。

    你可以检查一下

    print(id(Type), id(var.__class__))

    或与

    print(Type is var.__class__)

    请注意,这些比较适用于旧式和新式类。对于新式类,它们等价于 print(Type is type(var)) .但对于旧式类,情况并非如此。

  2. 另一个很常见的陷阱是你调用这个模块

    python -m module

    python module.py

    将其称为 __main__模块。如果它是以其真实名称在其他地方导入的,它也会以该名称以及不同的 namespace 为人所知。

  3. 另一个猜测可能是您正在使用 ABCs或以其他方式让类(class)拥有 __instancecheck__()方法。

关于Python:为什么isinstance可以返回False,什么时候应该返回True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582774/

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