我想issubclass(1, str)
返回false,1
不是str
的子類。因爲它根本不是一個類,所以我得到一個TypeError。有沒有像python的issubclass,如果第一個參數不是類,它將返回False?
有沒有一種很好的方法來測試這個,而不訴諸於try, except
?
try:
if issubclass(value, MyClass):
do_stuff()
except TypeError:
pass
我想issubclass(1, str)
返回false,1
不是str
的子類。因爲它根本不是一個類,所以我得到一個TypeError。有沒有像python的issubclass,如果第一個參數不是類,它將返回False?
有沒有一種很好的方法來測試這個,而不訴諸於try, except
?
try:
if issubclass(value, MyClass):
do_stuff()
except TypeError:
pass
不知道你的用例的,但檢查對一個類或類的實例是太完全不同的東西(而有不同的API方法:issubclass()與isinstance())。
所以你總是要檢查你的'item'是否是某個類的某個實例。
>
>> (1).__class__
<type 'int'>
>>> (1).__class__.__class__
<type 'type'>
,你可以調用issubclass()
之前只需檢查:
import types
def myissubclass (c, sc):
if type(c) != types.ClassType
return False
return issubclass (c, sc)
,但我認爲這將是更Python擁抱例外:
def myissubclass (c, sc):
try:
return issubclass (c, sc)
except TypeError:
return False
你似乎 想要實例:
>>> isinstance(1, str)
False