有没有类似python的issubclass,如果第一个arg不是Class,它会返回False?

时间:2011-04-14 04:32:41

标签: python

我希望issubclass(1, str)返回false,1不是str的子类。因为它根本不是一个类,所以我得到一个TypeError。

有没有一种好方法可以在不使用try, except的情况下进行测试?

try:
    if issubclass(value, MyClass):
        do_stuff()
except TypeError:
    pass

5 个答案:

答案 0 :(得分:3)

你似乎想要isinstance:

>>> isinstance(1, str)
False

答案 1 :(得分:2)

import inspect
def isclassandsubclass(value, classinfo):
    return inspect.isclass(value) and issubclass(value, classinfo)

答案 2 :(得分:0)

不确定你的用例是什么,但是检查类或类的实例是完全不同的东西(并且有不同的API方法:issubclass()与isinstance())。

所以你总是要检查你的'item'是否是某个类的实例。

>

>> (1).__class__
<type 'int'>
>>> (1).__class__.__class__
<type 'type'>

答案 3 :(得分:0)

您可以在致电issubclass()之前查看:

import types

def myissubclass (c, sc):
    if type(c) != types.ClassType
        return False
    return issubclass (c, sc)

但我认为拥抱异常会更加诡辩:

def myissubclass (c, sc):
    try:
        return issubclass (c, sc)
    except TypeError:
        return False

答案 4 :(得分:0)

不导入任何模块:

function save_image(savedimage) {

    var gh = savedimage;
    var a  = document.createElement('a');
    a.href = gh;
    a.download = 'image.png';

    a.click();
}