找出dir中的类型()

Edg*_*ian 1 python python-2.7

假设我们做了以下事情:

for i in dir(foo):

    print type(i)
Run Code Online (Sandbox Code Playgroud)

这个设置会返回一个字符串列表,但我更感兴趣的是找出foo里面的项目类型.这样做有什么好办法?

Mar*_*ers 6

dir()只给出了属性的名称; 使用该getattr()函数检索实际属性:

for i in dir(foo):
    attr = getattr(foo, i)
    print type(attr)
Run Code Online (Sandbox Code Playgroud)

您可能也对该inspect模块感兴趣; 该inspect.getmembers()函数为您列出名称和属性:

from inspect import getmembers

for name, attr in getmembers(foo):
    print '{}: {}'.format(name, type(attr))
Run Code Online (Sandbox Code Playgroud)

此外,还getmembers()允许您过滤属性类型:

from inspect import getmembers, ismethod

for name, attr in getmembers(foo, ismethod):
    print '{}: {}'.format(name, type(attr))
Run Code Online (Sandbox Code Playgroud)

只会显示绑定的方法foo.