You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Python类的方法(含参数)并保留方法定义原顺序?

获取类方法并保留原始定义顺序的解决方案

当然可以实现!Python 3.7 及以上版本里,类的__dict__属性会严格保留成员(包括方法)的定义顺序,再配合inspect模块,就能精准提取方法参数,还能避开dir()自动排序、__code__.co_varnames包含局部变量的问题。

给你改好的代码:

import inspect

def get_class_methods_with_params(PythonClass):
    methods = []
    # 按定义顺序遍历类的成员
    for name, member in PythonClass.__dict__.items():
        # 只筛选方法(排除类变量、属性等)
        if inspect.isfunction(member) or inspect.ismethod(member):
            # 提取方法的参数列表
            sig = inspect.signature(member)
            params = list(sig.parameters.keys())
            methods.append((name, params))
    return methods

为啥这么写?

  • __dict__在Python 3.7+是语言层面保证按定义顺序存储的,完全不用操心排序问题
  • inspect.signature能准确提取方法的入参,比直接用__code__.co_varnames靠谱多了——后者会把方法内部的局部变量也混进来,根本不是纯参数列表

比如你定义个类:

class TestClass:
    def __init__(self, name):
        self.name = name
    def hello(self, msg):
        print(f"{self.name}: {msg}")
    def foo(self):
        pass

用上面的函数返回的结果就是[('__init__', ['self', 'name']), ('hello', ['self', 'msg']), ('foo', ['self'])],完全和定义顺序一致。

内容的提问来源于stack exchange,提问作者Sprinkle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:44:52