
python 调用类的所有方法
常见问答
如何获取Python类中定义的所有方法?
我想在Python中列出某个类所有定义的方法,有没有简单有效的方法来实现?
使用内置函数dir()和过滤判断获取类的方法
可以使用内置的dir()函数,它会列出类的所有属性和方法。结合内置的callable()函数,可以筛选出其中所有可调用的方法。例如,方法可以这样获取:
methods = [method for method in dir(MyClass) if callable(getattr(MyClass, method)) and not method.startswith('__')]
这样便能得到除去魔法方法外的所有自定义方法。
怎样在Python中动态调用一个类的所有方法?
我希望遍历并依次调用某个类的所有方法,该怎么操作?
结合反射机制用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() # 调用方法
执行代码后会遍历所有普通方法并调用它们。
如何排除Python类的魔法方法,只获取自定义的方法?
打印类的方法时,会显示很多双下划线开头结尾的魔法方法,怎样过滤掉它们?
筛选方法名称,排除以双下划线开头和结尾的方法
大部分魔法方法名称格式为 method ,只需在筛选时排除这样的名称即可:
methods = [m for m in dir(MyClass) if callable(getattr(MyClass, m)) and not (m.startswith('__') and m.endswith('__'))]
这样方法列表只包含用户自定义的、非魔法方法。