我在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
我会说漂亮的WTF。这是怎么回事?
答案 0 :(得分:0)
啊哈!我认为是因为他们有:
from builtins import str
Apparently,这是为了获得类似Python 3的字符串。但是...很糟。
>>> from builtins import str
>>> isinstance("foo", str)
False
我想这就是您拒绝使用Python 3所得到的。