如何检查对象是否是类的实例,而不是它的任何子类(不知道子类的名称(?所以如果我有以下代码:
def instance_but_not_subclass(object, class):
#code
return result
class item(object):
class item_2(item):
...
class item_n(item):
a = item()
b = item_2()
...
c = item_n()
instance_but_not_subclass(a, item)
instance_but_not_subclass(b, item)
...
instance_but_not_subclass(c, item)
#code
空间中的哪些内容将产生输出?:
True
False
...
False
因为CCD_ 2和CCD_ 3总是返回CCD_。
object.__class__
属性是对对象的确切类的引用,因此您只需要将其与参数进行比较
def instance_but_not_subclass(obj, klass):
return obj.__class__ is klass
不要将变量命名为class
,这是一个关键字,不起作用,请使用klass
或typ
。此外,变量名object
会遮蔽object
中的构建,因此请使用类似obj
的内容。
我个人更喜欢.__class__
变体;蟒蛇;变体可能是
def instance_but_not_subclass(object, klass):
return type(obj) is klass
因为它不访问任何dunder(__
(属性。