python 调用类的所有方法

python 调用类的所有方法

作者:Rhett Bai发布时间:2026-03-29 01:46阅读时长:11 分钟阅读次数:3
常见问答
Q
如何获取Python类中定义的所有方法?

我想在Python中列出某个类所有定义的方法,有没有简单有效的方法来实现?

A

使用内置函数dir()和过滤判断获取类的方法

可以使用内置的dir()函数,它会列出类的所有属性和方法。结合内置的callable()函数,可以筛选出其中所有可调用的方法。例如,方法可以这样获取:

methods = [method for method in dir(MyClass) if callable(getattr(MyClass, method)) and not method.startswith('__')]

这样便能得到除去魔法方法外的所有自定义方法。

Q
怎样在Python中动态调用一个类的所有方法?

我希望遍历并依次调用某个类的所有方法,该怎么操作?

A

结合反射机制用getattr动态调用方法

通过之前获取的所有方法名列表,使用getattr函数获取对应方法,再进行调用。例如:

obj = MyClass()
methods = [m for m in dir(obj) if callable(getattr(obj, m)) and not m.startswith('__')]
for method_name in methods:
    method = getattr(obj, method_name)
    method()  # 调用方法

执行代码后会遍历所有普通方法并调用它们。

Q
如何排除Python类的魔法方法,只获取自定义的方法?

打印类的方法时,会显示很多双下划线开头结尾的魔法方法,怎样过滤掉它们?

A

筛选方法名称,排除以双下划线开头和结尾的方法

大部分魔法方法名称格式为 method ,只需在筛选时排除这样的名称即可:

methods = [m for m in dir(MyClass) if callable(getattr(MyClass, m)) and not (m.startswith('__') and m.endswith('__'))]

这样方法列表只包含用户自定义的、非魔法方法。