如何获取python类函数的名称

如何获取python类函数的名称

作者:Elara发布时间:2026-01-14阅读时长:0 分钟阅读次数:7

用户关注问题

Q
怎样在Python中动态获取某个类方法的名字?

我想在运行时获取一个Python类方法的名称,用于日志记录或调试,应该怎么做?

A

使用内置属性获取方法名称

可以通过方法对象的__name__属性来获取方法的名称。例如,假设有一个类MyClass,定义了方法my_method,可以这样获取名称:

class MyClass:
    def my_method(self):
        pass

method_name = MyClass.my_method.__name__
print(method_name)  # 输出: my_method

这是一种简便且可靠的方式来获取类函数的名字。

Q
如何在类实例中获取当前调用的方法名称?

在类的方法内部,想获取该方法的名字,有没有什么简便方法?

A

利用inspect模块获取当前函数名

import inspect模块可以实现该功能。使用inspect.currentframe()和inspect.getframeinfo()能够获取当前运行帧的函数名。示例如下:

import inspect

class MyClass:
    def my_method(self):
        print(inspect.currentframe().f_code.co_name)

obj = MyClass()
obj.my_method()  # 输出: my_method

这样就能在函数中获得其自身名称。

Q
有没有办法获取Python类的所有函数名称?

想知道如何列出某个Python类中所有定义的函数名,有什么推荐的方法吗?

A

利用内置函数dir结合callable判断

可以用dir()获取类的所有属性名,然后通过callable()函数筛选出方法名称,如下所示:

class MyClass:
    def method1(self): pass
    def method2(self): pass

methods = [attr for attr in dir(MyClass) if callable(getattr(MyClass, attr)) and not attr.startswith('__')]
print(methods)  # 输出: ['method1', 'method2']

该方法能够方便地列出类中所有非魔法方法的函数名。