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

Dan*_*man 14 python

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

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

issubclass仅适用于实例,不适用于类对象本身.我想我可以实例化类,执行issubclass并丢弃实例,但这似乎有点浪费.

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

if GenericClass in myclass.__mro__:
    result = generic_factory(myclass)
else:
    result = other_factory(myclass)
Run Code Online (Sandbox Code Playgroud)

Unk*_*own 29

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

这对我来说可以:

>>> class test(object):pass
...
>>> issubclass(test,object)
True
Run Code Online (Sandbox Code Playgroud)