我希望issubclass(1, str)
返回false,1
不是str
的子类。因为它根本不是一个类,所以我得到一个TypeError。
有没有一种好方法可以在不使用try, except
的情况下进行测试?
try:
if issubclass(value, MyClass):
do_stuff()
except TypeError:
pass
答案 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();
}