首页 > 解决方案 > 为同一类返回 False 的 issubclass 的替代方案?

问题描述

当一个类是另一个类的子类时,issubclass 返回 True,但在比较同一类时它也返回 True,因为一个类是其自身的子类。例如:

class Parent:
    pass

class Child(Parent):
    pass

>>> issubclass(Child, Parent)
True
>>> issubclass(Parent, Parent)
True

有没有办法检查一个类是否是另一个类的子类,但忽略同一个类的情况?

标签: python

解决方案


我认为没有内置函数可以做到这一点,因此您应该使用运算符“and”创建自己的函数

issubclassn = lambda c1, c2: (c1 != c2 and issubclass(c1, c2))

或者

def issubclassn(c1, c2):
    return c1 != c2 and issubclass(c1, c2)

尝试

class Parent:
    pass

class Child(Parent):
    pass

>>> issubclassn(Parent, Parent)
False

>>> issubclassn(Child, Parent)
True

推荐阅读