class p1(object): pass
class p2(p1): pass
Итак, p2 является подклассом p1. Есть ли способ узнать программно, что p1 является [одним из] суперкласса [ов] p2?
Вопрос
class p1(object): pass
class p2(p1): pass
Итак, p2 является подклассом p1. Есть ли способ узнать программно, что p1 является [одним из] суперкласса [ов] p2?
Да, есть способ. Вы можете использовать функцию issubclass.
Следующее:
class p1(object):pass
class p2(p1):pass
issubclass(p2, p1)
использование ‹class›.__bases__ похоже на то, что вы ищете...
>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)
В зависимости от того, что вы пытаетесь сделать, метод "mro" также может быть полезен.
Я думаю, вы хотели использовать "класс" вместо "деф".. :) В любом случае, попробуйте p2.__bases__
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.