代码之家  ›  专栏  ›  技术社区  ›  Timmmm

对于具有相同ID的类型,Python isinstance返回false

  •  0
  • Timmmm  · 技术社区  · 7 年前

    我有个奇怪的问题 this code in cpuset isinstance('/user', str) 正在返回 False

        log.debug("repr(name): %s", repr(name))
        log.debug("type(name): %s", type(name))
        log.debug("name.__class__: %s", name.__class__)
        log.debug("id(name.__class__): %s", str(id(name.__class__)))
        log.debug("id(''.__class__): %s", str(id("".__class__)))
        log.debug("isinstance(name, str)?: %s", str(isinstance(name, str)))
    

    这是结果。

    180820-14:28:55 set    DEBUG    repr(name): '/user'
    180820-14:28:55 set    DEBUG    type(name): <type 'str'>
    180820-14:28:55 set    DEBUG    name.__class__: <type 'str'>
    180820-14:28:55 set    DEBUG    id(name.__class__): 94668708986528
    180820-14:28:55 set    DEBUG    id(''.__class__): 94668708986528
    180820-14:28:55 set    DEBUG    isinstance(name, str)?: False
    

    我想说是很漂亮的。这是怎么回事?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Timmmm    7 年前

    啊哈!我想是因为他们有:

    from builtins import str
    

    Apparently 这是为了得到一个类似Python 3的字符串。但是。。。真是一团糟。

    >>> from builtins import str
    >>> isinstance("foo", str)
    False
    

    如果你拒绝迁移到Python 3,我想这就是你得到的。

    推荐文章