首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查变量是否为类?

如何检查变量是否为类?
EN

Stack Overflow用户
提问于 2008-12-28 11:08:06
回答 12查看 211.6K关注 0票数 288

我想知道如何检查变量是否是类(而不是实例!)或者不是。

我曾尝试使用函数isinstance(object, class_or_type_or_tuple)来完成此操作,但我不知道一个类将具有什么类型。

例如,在下面的代码中

代码语言:javascript
复制
class Foo: pass  
isinstance(Foo, **???**) # i want to make this return True.

我尝试将"class“替换为,但我意识到class是python中的一个关键字。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2008-12-28 03:47:01

更好的方法是:使用inspect.isclass函数。

代码语言:javascript
复制
>>> import inspect
>>> class X(object):
...     pass
... 
>>> inspect.isclass(X)
True

>>> x = X()
>>> isinstance(x, X)
True
>>> inspect.isclass(x)
False
票数 424
EN

Stack Overflow用户

发布于 2008-12-28 03:11:54

代码语言:javascript
复制
>>> class X(object):
...     pass
... 
>>> type(X)
<type 'type'>
>>> isinstance(X,type)
True
票数 54
EN

Stack Overflow用户

发布于 2012-04-12 20:24:09

inspect.isclass可能是最好的解决方案,很容易看出它是如何实际实现的

代码语言:javascript
复制
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))
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/395735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档