如何判断一个类是否来自另一个类

时间:2009-05-19 09:00:24

标签: python

我有一个接受类(不是实例)的函数,并且根据它是否是特定类的子类,我需要将它传递给两个中的一个其他(第三方)工厂职能。

(为了防止任何异议,我知道这不是Pythonic,但我依赖于第三方库接受的内容。)

issubclass仅适用于实例,而不适用于类对象本身。我想我可以实例化这个类,做issubclass并扔掉实例,但这看起来有点浪费。

这就是我现在正在做的事情,依靠内置的 mro 属性来判断某个类是否在我班级的祖先列表中。这样做是否安全?有没有更好的方法呢?

if GenericClass in myclass.__mro__:
    result = generic_factory(myclass)
else:
    result = other_factory(myclass)

1 个答案:

答案 0 :(得分:28)

  

issubclass仅适用于实例,而不适用于类对象本身。

它适用于我:

>>> class test(object):pass
...
>>> issubclass(test,object)
True