回答
登记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. 如何查找angularjs提供程序的模块名称?
- 4. 查找Python模块文件名
- 5. Python模块名称冲突
- 6. Python模块名称冲突
- 7. 在类中查找名称
- 8. Python中的名称空间和模块
- 9. 如何检查类或模块是否有名称空间?
- 10. 从python包中获取模块名称
- 11. 如何查找类中的类实例变量的名称。
- 12. 查找Jar名称使用类名称
- 13. 如何避免在python中导入模块时一直写模块的名称?
- 14. 如何将Python模块导入与导入模块名称相同的包中?
- 15. 如何访问从Python中的调用模块调用模块名称空间?
- 16. 如何在Python中加载与其他模块名称相同的模块?
- 17. 在Julia中查找封装给定的模块名称?
- 18. 在类别模块中显示父类别名称模块
- 19. Python中的模块名称冲突,如何解决?
- 20. 如何查找包含模块的模块或类?
- 21. 如何从模块中获取扩展模块的类的名称?
- 22. C++模板中的名称查找
- 23. 模板Haskell - 如何查找类型运算符名称?
- 24. Python:如何从两个模块中导入具有相同名称的类?
- 25. 冲突之间的名称与模块的类名称和模块的子类名称
- 26. python确定导入模块的名称
- 27. python模块的完全限定名称
- 28. Python的同一模块名称公约
- 29. Python和冲突的模块名称
- 30. Sql查找表中的类似名称
使用`ipython`;) – hugomg 2011-12-15 12:41:47
你只是试图学习如何使用这个类,或者你在寻找类似名称列表的东西? – Shep 2012-04-15 16:08:20