Проверка, является ли A суперклассом B в Python - PullRequest
26 голосов
/ 21 декабря 2009
class p1(object): pass
class p2(p1): pass

Таким образом, p2 является подклассом p1. Есть ли способ программно узнать, что p1 является [одним из] суперклассом [es] для p2?

Ответы [ 4 ]

42 голосов
/ 21 декабря 2009

с использованием .__ Base__, похоже, то, что вы ищете ...

>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)
37 голосов
/ 21 декабря 2009

Да, есть способ. Вы можете использовать функцию issubclass .

следующим образом:

class p1(object):pass
class p2(p1):pass

issubclass(p2, p1)
6 голосов
/ 21 декабря 2009

В зависимости от того, что вы пытаетесь сделать, метод "mro" также может быть полезен.

5 голосов
/ 21 декабря 2009

Я думаю, что вы хотели использовать "класс" вместо "def" .. :) В любом случае, попробуйте p2.__bases__

...