gpt4 book ai didi

python - isinstance() 和 issubclass() 返回冲突的结果

转载 作者:IT老高 更新时间:2023-10-28 20:29:30 29 4
gpt4 key购买 nike

你如何解释 isinstance(Hello,object) 返回 Trueissubclass(Hello,object) 返回 False ?

>>> class Hello:
pass

>>> isinstance(Hello,object)
True
>>> issubclass(Hello,object)
False
>>> a = Hello()
>>> isinstance(a,object)
True

最佳答案

接受的答案是正确的,但似乎错过了重要的一点。内置函数isinstanceissubclass问两个不同的问题。

isinstance (object, classinfo) 询问 object 是否是 class 的实例(或类元组) .

issubclass (class, classinfo) 询问一个 class 是否是另一个类(或其他类)的子类。

在任一方法中,classinfo 都可以是“类、类型或类、类型和此类元组的元组”。

由于类本身就是对象,因此 isinstance 可以很好地应用。我们还可以询问一个类是否是另一个类的子类。但是,我们不一定要从这两个问题中得到相同的答案。

class Foo(object):
pass

class Bar(Foo):
pass

issubclass(Bar, Foo)
#>True
isinstance(Bar, Foo)
#>False

Bar 是 Foo 的子类,而不是它的实例。 Bar 是 type 的实例,它是 object 的子类,因此 Bar 类是 object 的实例。

isinstance(Bar, type)
#>True
issubclass(type, object)
#>True
isinstance(Bar, object)
#>True

关于python - isinstance() 和 issubclass() 返回冲突的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8107313/

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