我有一个接受类(不是实例)的函数,并且根据它是否是特定类或的子类,我需要将它传递给两个中的一个其他(第三方)工厂职能。
(为了防止任何异议,我知道这不是Pythonic,但我依赖于第三方库接受的内容。)
issubclass
仅适用于实例,而不适用于类对象本身。我想我可以实例化这个类,做issubclass
并扔掉实例,但这看起来有点浪费。
这就是我现在正在做的事情,依靠内置的 mro 属性来判断某个类是否在我班级的祖先列表中。这样做是否安全?有没有更好的方法呢?
if GenericClass in myclass.__mro__:
result = generic_factory(myclass)
else:
result = other_factory(myclass)
答案 0 :(得分:28)
issubclass仅适用于实例,而不适用于类对象本身。
它适用于我:
>>> class test(object):pass
...
>>> issubclass(test,object)
True