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

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

4

4 回答 4

46

使用 <class>.__bases__ 似乎是您正在寻找的...

>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)
于 2009-12-21T08:24:07.540 回答
40

是的,有办法。您可以使用issubclass函数。

如下:

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

issubclass(p2, p1)
于 2009-12-21T07:58:39.727 回答
6

根据您要执行的操作,“mro”方法也很有用。

于 2009-12-21T08:03:07.380 回答
5

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

于 2009-12-21T07:54:22.933 回答