python - 为同一类返回 False 的 issubclass 的替代方案?
问题描述
当一个类是另一个类的子类时,issubclass 返回 True,但在比较同一类时它也返回 True,因为一个类是其自身的子类。例如:
class Parent:
pass
class Child(Parent):
pass
>>> issubclass(Child, Parent)
True
>>> issubclass(Parent, Parent)
True
有没有办法检查一个类是否是另一个类的子类,但忽略同一个类的情况?
解决方案
我认为没有内置函数可以做到这一点,因此您应该使用运算符“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