
如何获取python类函数的名称
用户关注问题
怎样在Python中动态获取某个类方法的名字?
我想在运行时获取一个Python类方法的名称,用于日志记录或调试,应该怎么做?
使用内置属性获取方法名称
可以通过方法对象的__name__属性来获取方法的名称。例如,假设有一个类MyClass,定义了方法my_method,可以这样获取名称:
class MyClass:
def my_method(self):
pass
method_name = MyClass.my_method.__name__
print(method_name) # 输出: my_method
这是一种简便且可靠的方式来获取类函数的名字。
如何在类实例中获取当前调用的方法名称?
在类的方法内部,想获取该方法的名字,有没有什么简便方法?
利用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
这样就能在函数中获得其自身名称。
有没有办法获取Python类的所有函数名称?
想知道如何列出某个Python类中所有定义的函数名,有什么推荐的方法吗?
利用内置函数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']
该方法能够方便地列出类中所有非魔法方法的函数名。