如何检查一个variables是否是一个类?

我想知道如何检查variables是否是一个类(不是一个实例!)或不。

我已经尝试使用函数isinstance(object, class_or_type_or_tuple)来做到这一点,但我不知道类会有什么types。

例如,在下面的代码中

 class Foo: pass isinstance(Foo, **???**) # i want to make this return True. 

我尝试用“ ??? ”replace??? ,但我意识到, class是python中的关键字。

更好:使用inspect.isclass函数。

 >>> import inspect >>> class X(object): ... pass ... >>> inspect.isclass(X) True >>> x = X() >>> isinstance(x, X) True >>> y = 25 >>> isinstance(y, X) False 

inspect.isclass可能是最好的解决scheme,很容易看到它是如何实现的

 def isclass(object): """Return true if the object is a class. Class objects provide these attributes: __doc__ documentation string __module__ name of module in which this class was defined""" return isinstance(object, (type, types.ClassType)) 
 >>> class X(object): ... pass ... >>> type(X) <type 'type'> >>> isinstance(X,type) True 
 isinstance(X, type) 

如果X是class,则返回True否则返回False

类Foo:被称为旧式类和类X(object):被称为新式样类。

检查这在Python中的旧风格和新风格类有什么区别? 。 新的风格被推荐。 阅读“ 统一types和类 ”

这有点冒失,但如果你不想避免import的话,这是一个select:

 def isclass(obj): try: issubclass(obj, object) except TypeError: return False else: return True 

这里有一些工作的解决scheme,但这里有另一个:

 >>> import types >>> class Dummy: pass >>> type(Dummy) is types.ClassType True