isinstance() 和 issubclass() 返回相互冲突的结果 [英] isinstance() and issubclass() return conflicting results
本文介绍了isinstance() 和 issubclass() 返回相互冲突的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
和
<预><代码>>>>isinstance(你好,对象)真的>>>issubclass(你好,对象)错误的>>>a = 你好()>>>isinstance(a,object)真的你如何解释 isinstance(Hello,object)
返回 True 而 issubclass(Hello,object)
返回 False强>
解决方案
这是因为您使用的是旧式类,所以它不是从 object
派生的.试试这个:
class Hello(object):经过>>>issubclass(你好,对象)真的
旧式类已弃用,您不应再使用它们.
在 Python 3.x 中,所有类都是新样式,不再需要编写 (object)
.
>>> class Hello:
pass
and
>>> isinstance(Hello,object)
True
>>> issubclass(Hello,object)
False
>>> a = Hello()
>>> isinstance(a,object)
True
How do you explain isinstance(Hello,object)
returns True whilst issubclass(Hello,object)
returns False
解决方案
It's because you are using old-style classes so it doesn't derive from object
. Try this instead:
class Hello(object):
pass
>>> issubclass(Hello,object)
True
Old-style classes are deprecated and you shouldn't use them any more.
In Python 3.x all classes are new-style and writing (object)
is no longer required.
这篇关于isinstance() 和 issubclass() 返回相互冲突的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文