仅返回类、对象、函数和常量组合的 Python 列表中的类名

扎眼的阳光 python 191

原文标题Return only Class names from a Python list of combination of classes, objects, functions and constants

我有一个包含各种类、对象、函数和常量的混合 Python 列表。我只想从该列表中获取类作为输出。例如,

my_list = [Class1, Class2, obj1, func1, obj2, Class3, func2]

我想要类似的东西;

get_classes(my_list)

所以输出是;

[Class1, Class2, Class3]

任何帮助表示赞赏。谢谢你。

原文链接:https://stackoverflow.com//questions/71476450/return-only-class-names-from-a-python-list-of-combination-of-classes-objects-f

回复

我来回复
  • Samwise的头像
    Samwise 评论

    所有类都是type的实例,所以你可以这样做:

    def get_classes(my_list):
        return [i for i in my_list if isinstance(i, type)]
    
    2年前 0条评论
  • aaossa的头像
    aaossa 评论

    您可以使用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 中查看源代码来确认它:

    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)
    
    2年前 0条评论
  • Alvin Lee的头像
    Alvin Lee 评论

    尝试查看 python 中的 isinstance() 函数。

    2年前 0条评论