#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