检查A是否是Python中B的超类

时间:2009-12-21 07:49:15

标签: python reflection superclass

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

所以p2是p1的子类。有没有办法以编程方式找出p1是p2的超类[es]中的一个?

4 个答案:

答案 0 :(得分:42)

使用< class> .__ bases__似乎是你正在寻找的......

>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)

答案 1 :(得分:37)

是的,有方法。您可以使用issubclass功能。

如下:

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

issubclass(p2, p1)

答案 2 :(得分:6)

根据您的尝试,“mro”方法也很有用。

答案 3 :(得分:5)

我认为您打算使用“class”而不是“def”.. :)无论如何,请尝试p2.__bases__