Альтернатива для issubclass, которая возвращает False для того же класса?

#python

#python

Вопрос:

issubclass возвращает True, когда один класс является подуровнем другого, но он также возвращает True при сравнении одного и того же класса, поскольку класс является подклассом самого себя. Например:

 class Parent:
    pass

class Child(Parent):
    pass

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

Есть ли способ проверить, является ли класс подклассом другого, но игнорирует случай того же класса?

Комментарии:

1. cls is not Parent and issubclass(cls, Parent) …?

2. @deceze это сделало бы это, спасибо!

Ответ №1:

Я не думаю, что для этого есть встроенная функция, поэтому вы должны создать свою собственную функцию, используя оператор «и»

 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