如果我导入模块:
import foo
如何找到它包含的类的名称?
答案 0 :(得分:8)
您可以使用inspect模块执行此操作。例如:
import inspect
import foo
for name, obj in inspect.getmembers(foo):
if inspect.isclass(obj):
print name
答案 1 :(得分:2)
签入dir(foo)
。按照惯例,类名将是CamelCase中的类名。
如果foo
违反惯例,我可以猜测类名是[x for x in dir(foo) if type(getattr(foo, x)) == type]
,但这很难看,可能非常脆弱。
答案 2 :(得分:1)
从qeustion How to check whether a variable is a class or not?我们可以使用inspect
模块检查变量是否为类(示例代码从接受的答案中无耻地解除):
>>> import inspect
>>> class X(object):
... pass
...
>>> inspect.isclass(X)
True
所以要建立一个列表,其中包含我们可以使用的模块中的所有类
import foo
classes = [c for c in dir(foo) if inspect.isclass(getattr(foo, c))]
更新:根据Chris Morgan的评论,上述示例已经过编辑,使用getattr
(foo, c)
而不是foo.__getattribute__(c)
。
答案 3 :(得分:0)
您可以查看通过dir(foo)
找到的元素类型:类的类型为type
。
import foo
classlist = []
for i in dir(foo):
if type(foo.__getattribute__(i)) is type:
classlist.append(i)
答案 4 :(得分:0)
您可以通过导入Python模块然后使用help(module-name)获取有关Python模块的大量信息,例如foo,如下所示:
>>> import foo
>>> help(foo)