jee*_*ngk 216 python reflection
我想知道如何检查变量是否是一个类(不是实例!).
我已经尝试使用该函数isinstance(object, class_or_type_or_tuple)来执行此操作,但我不知道类将具有什么类型.
例如,在以下代码中
class Foo: pass
isinstance(Foo, **???**) # i want to make this return True.
Run Code Online (Sandbox Code Playgroud)
我试图取代" class"与??? ,但我意识到这class是python中的关键字.
Ben*_*son 301
更好的是:使用该inspect.isclass功能.
>>> import inspect
>>> class X(object):
... pass
...
>>> inspect.isclass(X)
True
>>> x = X()
>>> isinstance(x, X)
True
>>> y = 25
>>> isinstance(y, X)
False
Run Code Online (Sandbox Code Playgroud)
and*_*tti 41
inspect.isclass可能是最好的解决方案,很容易看出它是如何实现的
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))
Run Code Online (Sandbox Code Playgroud)
S.L*_*ott 34
>>> class X(object):
... pass
...
>>> type(X)
<type 'type'>
>>> isinstance(X,type)
True
Run Code Online (Sandbox Code Playgroud)
小智 21
isinstance(X, type)
Run Code Online (Sandbox Code Playgroud)
True如果X是上课False则返回,如果不是.
此检查与 Python 2.x 和 Python 3.x 兼容。
import six
isinstance(obj, six.class_types)
Run Code Online (Sandbox Code Playgroud)
这基本上是一个包装函数,它执行与 andrea_crotti 答案中相同的检查。
例子:
>>> import datetime
>>> isinstance(datetime.date, six.class_types)
>>> True
>>> isinstance(datetime.date.min, six.class_types)
>>> False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141070 次 |
| 最近记录: |