回答
登记dir(foo)
。按照惯例,类名将是CamelCase中的类名。
如果foo
违反惯例,我猜你可能会得到类似[x for x in dir(foo) if type(getattr(foo, x)) == type]
这样的类名,但这很丑并且可能非常脆弱。
您可以使用inspect模块来执行此操作。例如:
import inspect
import foo
for name, obj in inspect.getmembers(foo):
if inspect.isclass(obj):
print name
我只有__class__作为输出,而不是真正的类名 – tapioco123 2011-12-15 23:00:19
嗯,我不知道为什么会这样,对我来说工作正常,无论是标准库模块还是我自己编写的模块(使用Python 2.7) – obmarg 2011-12-15 23:52:17
您可以通过检查发现dir(foo)
元素类型:类将有类型type
。
import foo
classlist = []
for i in dir(foo):
if type(foo.__getattribute__(i)) is type:
classlist.append(i)
从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))]
更新:以上实例H按照Chris Morgan的评论,被编辑为使用getattr
(foo, c)
而不是使用foo.__getattribute__(c)
。
你可以得到很多关于Python模块的信息,说富,通过导入它,然后使用帮助(模块名称)如下:
>>> import foo
>>> help(foo)
- 1. 无法找到模块名称 - Python,Flask
- 2. 如何更改Python模块名称?
- 3. Python模块名称冲突
- 4. 如何检查类或模块是否有名称空间?
- 5. 从python包中获取模块名称
- 6. 如何查找类中的类实例变量的名称。
- 7. 查找Jar名称使用类名称
- 8. 在Julia中查找封装给定的模块名称?
- 9. 如何将Python模块导入与导入模块名称相同的包中?
- 10. 如何访问从Python中的调用模块调用模块名称空间?
- 11. 如何避免在python中导入模块时一直写模块的名称?
- 12. 在类别模块中显示父类别名称模块
- 13. 模板Haskell - 如何查找类型运算符名称?
- 14. 冲突之间的名称与模块的类名称和模块的子类名称
- 15. Python:如何从两个模块中导入具有相同名称的类?
- 16. Python的同一模块名称公约
- 17. Sql查找表中的类似名称
- 18. 与现有模块具有相同名称的python模块名称
- 19. 如何查找Jframe名称
- 20. requirejs中的模块名称
- 21. 如何在python中通过名称找到类的函数?
- 22. 如何从Python的Datetime对象中查找星期几名称?
- 23. 查找模块中可用的类
- 24. 如何将子模块名称保留在Python包的名称空间之外?
- 25. 如何在名称空间类中包含模块?
- 26. Python导入两个具有相同类名称的模块
- 27. Python:通过名称加载模块
- 28. Python - 获取完整包模块名称
- 29. 如何在名称树中查找blob
- 30. 如何以递归方式查找模块中的所有模块和类?
使用`ipython`;) – hugomg 2011-12-15 12:41:47
你只是试图学习如何使用这个类,或者你在寻找类似名称列表的东西? – Shep 2012-04-15 16:08:20