isinstance(...)的功能;但没有实例?

时间:2019-12-05 11:34:16

标签: python python-3.x inheritance types

在运行时,我想检查指定的子类是否从指定的父类派生。

使用对象实例,很容易:

def is_related(child_instance, parent_type):
    return isinstance(child_instance, parent_type)

是否有某种方法可以执行此操作而不拥有(或创建)孩子的实例,而是引用孩子的类型?

类似...

def is_related(child_type, parent_type):
    return is_child_class(child_type, parent_type)

is_child_class提供实现会回答这个问题。

(通过比较,C#中的类型知道它们的超类型。我不知道在Python中是否也是这样。)

3 个答案:

答案 0 :(得分:2)

让我们说ChildClassParentClass的子类。然后

issubclass(ChildClass, ParentClass)

将返回True

答案 1 :(得分:2)

这是一个可能的解决方案:

class A:
    pass

class B(A):
    pass

issubclass(B, A) # True

答案 2 :(得分:2)

您需要将is_child_class方法定义为:

def is_child_class(child_type, parent_type):
  return issubclass(child_type, parent_type)
相关问题