isinstance() 和 issubclass() 返回相互冲突的结果 [英] isinstance() and issubclass() return conflicting results

查看:52
本文介绍了isinstance() 和 issubclass() 返回相互冲突的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<预><代码>>>>班级您好:经过

<预><代码>>>>isinstance(你好,对象)真的>>>issubclass(你好,对象)错误的>>>a = 你好()>>>isinstance(a,object)真的

你如何解释 isinstance(Hello,object) 返回 Trueissubclass(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆