【问题标题】:Python - isinstance(classInfo, classInfo)Python - isinstance(classInfo, classInfo)
【发布时间】:2014-01-10 20:39:32
【问题描述】:

Python 文档说isinstance 需要一个类的实例对象和类信息。问题是: 我只有 2 个类信息对象,必须检查 class_inf1 是否是 class_inf2 的实例

例子:

class Foo(object):
    pass

class Bar(Foo):
    pass

# It should check if Bar is a instance of Foo. Bar can either be one of many subclasses or 
# the same class.
isinstance(Bar, Foo)

# i.e.: the function I'm looking for should be working as if Bar was an object:
isinstance(Bar(), Foo)

在我更复杂的代码中,我不知道 Bar 是什么,因为它是一个变量。我无法初始化它,因为我不知道它需要什么参数,而且它也可能会做一些讨厌的事情。 (而且我永远不需要初始化这个变量,因为它是一种测试)。

【问题讨论】:

  • 没有“类信息”对象。类本身就是一个对象,它就是您正在处理的那些类对象。清除那些 Java 主义的思想 :-)

标签: python instanceof isinstance


【解决方案1】:

您的术语相当混乱,但我最好的猜测是您想检查一个类是否从另一个类继承。这是通过issubclass 内置实现的:

class B(object):
    pass

class D(B):
    pass

print issubclass(B, object)
print issubclass(D, B) # true
# order matters:
print issubclass(B, D) # false
# it's transitive:
print issubclass(D, object)
# a class is a subclass of itself:
print issubclass(B, B) # true

【讨论】:

  • 你说得对。我正在寻找issubclass。 (我会在 10 分钟后接受你的回答,只要 Stackoverflow 允许我这样做)。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2013-02-12
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 2018-11-28
相关资源
最近更新 更多