欢迎访问宙启技术站
智能推送

使用Python中的get_class_members()函数获取类的成员变量和方法

发布时间:2023-12-17 07:05:31

在Python中,可以使用dir()函数来获取类的成员变量和方法。dir()函数返回一个包含类的所有成员的列表。

然而,dir()函数返回的列表包含了类的所有成员,包括继承自父类的成员和一些内置的成员。如果我们只想获取类自身定义的成员,可以使用get_class_members()函数。

下面是一个使用get_class_members()函数的例子:

def get_class_members(cls):
    members = dir(cls)
    return [m for m in members if not callable(getattr(cls, m))]

class MyClass:
    class_variable = 1

    def __init__(self):
        self.instance_variable = 2

    def instance_method(self):
        pass

    @staticmethod
    def static_method():
        pass

    @classmethod
    def class_method(cls):
        pass

members = get_class_members(MyClass)
print(members)

运行以上代码,会输出类MyClass自身定义的成员变量和方法的列表:

['class_variable', 'instance_variable']

在上面的例子中,MyClass定义了一个类变量class_variable和一个实例变量instance_variable。它还定义了实例方法instance_method()、静态方法static_method()和类方法class_method()

get_class_members()函数通过调用dir()函数获取类的所有成员,然后使用列表推导式来过滤掉所有可调用的成员(即方法),只保留变量。最后,返回包含类变量和实例变量的列表。

请注意,get_class_members()函数只能获取类的成员变量和方法,不能获取父类的成员。因此,在上面的例子中,如果MyClass的父类定义了成员变量或方法,它们将不会包含在结果列表中。如果要获取包括继承成员在内的所有成员,可以使用dir()函数。

希望上述示例能够帮助您了解如何使用get_class_members()函数来获取类的成员变量和方法。