我从Python模块导入了所有东西。说;说;
from module import *该模块混合了类、函数、对象(单例)和常量。我想知道具体可用的类/函数/对象/常量是什么。
通过使用dir(),我可以将所有类、对象、函数和常量的混合Python列表作为名称。例如,dir()在导入模块后给出当前作用域中的名称;
['Class1', 'Class2', 'obj1', 'func1', 'obj2', 'Class3', 'func2', 'CONST1']现在,如果我需要知道模块中的名称类型,我需要手动检查它们的类型是否是类/函数/对象/常量;
type(Class1)
type(obj1)
type(func1)
type(CONST1)我希望从模块导入中获取所有类/函数/对象/常量作为它们的原始类型。例如;
get_classes()应该回来;
[Class1, Class2, Class3]其中,Class1、Class2和Class3作为类返回,而不仅仅是它们的名称。因此type(get_classes()[0]应该返回type或isinstance(get_classes()[0], type)应该返回True。函数、对象和常量也需要类似的输出。
任何帮助都是非常感谢的。谢谢。
发布于 2022-03-15 02:48:45
所有类都是type的实例,因此您可以这样做:
def get_classes(my_list):
return [i for i in my_list if isinstance(i, type)]发布于 2022-03-15 02:47:47
您可以使用inspect.isclass,根据文档:
如果对象是类,则返回True,无论是内置类还是用Python代码创建的类。
因此,您的函数可以使用inspect.isclass函数来理解列表,如下所示:
def get_classes(my_list):
return [value for value in my_list if inspect.isclass(value)]注意,inspect.isclass在内部使用isinstance。您可以确认它在GitHub中看到了GitHub:
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)发布于 2022-03-15 02:50:29
尝试查看python中的isinstance()函数。
https://stackoverflow.com/questions/71476450
复制相似问题