如何检查一个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