如何在Python中检查两个实例对象是否属于同一父类?
检查Python对象是否共享指定父类的方法
方法1:用isinstance()验证是否属于目标父类的实例
这是最直接的解决方案,isinstance(obj, cls)会返回布尔值,判断对象是否是指定类或其子类的实例,完全匹配你需要判断两个实例是否均为superclass1实例的场景。
示例代码:
class Superclass1: pass class Sub1(Superclass1): pass class Sub2(Superclass1): pass # 实例化对象 obj1 = Sub1() obj2 = Sub2() # 执行检查 if isinstance(obj1, Superclass1) and isinstance(obj2, Superclass1): print("两个实例均属于Superclass1的子类实例") else: print("不符合条件")
方法2:检查类的继承链(适配复杂继承场景)
如果需要确认两个实例的类是否共享某个父类(无论直接还是间接继承),可以通过类的__mro__属性(方法解析顺序)查看完整继承链,或用issubclass()判断子类关系。
示例代码:
# 检查两个实例的类是否均继承自Superclass1 if issubclass(type(obj1), Superclass1) and issubclass(type(obj2), Superclass1): print("两个实例的类均继承自Superclass1") # 查看类的完整继承链 print(Sub1.__mro__) # 输出: (<class '__main__.Sub1'>, <class '__main__.Superclass1'>, <class 'object'>)
补充:严格检查是否有共同直接父类
如果需求是判断两个实例的类是否以superclass1作为直接父类,可以直接对比类的__bases__属性:
if type(obj1).__bases__[0] == type(obj2).__bases__[0] == Superclass1: print("两个实例的类的直接父类都是Superclass1")
注意:如果类存在多继承(多个直接父类),需要调整逻辑遍历__bases__列表进行匹配。
内容的提问来源于stack exchange,提问作者soapeater
相关产品推荐
相关产品推荐

