在运行时,我想检查指定的子类是否从指定的父类派生。
使用对象实例,很容易:
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中是否也是这样。)
答案 0 :(得分:2)
让我们说ChildClass
是ParentClass
的子类。然后
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)